@nasti-toolchain/nasti 1.4.1 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -24,6 +24,7 @@
24
24
  - **内置 React 支持** - JSX 自动转换 + React Fast Refresh HMR
25
25
  - **内置 Vue 支持** - SFC 编译 + Vue HMR(可选依赖 `@vue/compiler-sfc`)
26
26
  - **Electron 41+ 支持** - 一键构建主进程 / Preload / 渲染进程,支持 ESM 主进程
27
+ - **Monaco Editor 集成** - 内置 `monacoEditorPlugin`,预打包 Web Worker,修复 HMR 期间的 EMFILE
27
28
  - **Dev Server + HMR** - 开发服务器 + WebSocket 热模块替换
28
29
  - **TypeScript 优先** - 原生 TS 支持,零配置
29
30
 
@@ -243,6 +244,57 @@ app.whenReady().then(createWindow)
243
244
 
244
245
  > 详细说明见 [Electron 指南](https://nasti.zixiaolabs.com/pages/electron.html)。
245
246
 
247
+ ## Monaco Editor 支持
248
+
249
+ 内置 `monacoEditorPlugin`(对标 `vite-plugin-monaco-editor`),解决两个老大难问题:
250
+
251
+ 1. Monaco 的 Web Worker 是独立入口,必须单独打包
252
+ 2. `monaco-editor` 包含 2000+ 源文件,按 ESM 逐文件服务会在 HMR 时触发 **EMFILE(too many open files)** — 本插件将 Worker 预打包到磁盘缓存,并把 `monaco-editor` 目录显式从 watcher 中剔除
253
+
254
+ ```bash
255
+ npm install monaco-editor
256
+ ```
257
+
258
+ ```ts
259
+ // nasti.config.ts
260
+ import { defineConfig, monacoEditorPlugin } from '@nasti-toolchain/nasti'
261
+
262
+ export default defineConfig({
263
+ plugins: [
264
+ monacoEditorPlugin({
265
+ // 默认全部启用:editorWorkerService / css / html / json / typescript
266
+ languageWorkers: ['editorWorkerService', 'json', 'typescript'],
267
+
268
+ // 自定义 Worker(如 monaco-graphql)
269
+ customWorkers: [
270
+ { label: 'graphql', entry: 'monaco-graphql/esm/graphql.worker' },
271
+ ],
272
+
273
+ // Worker URL 前缀,可指向 CDN 绝对 URL
274
+ publicPath: 'monacoeditorwork',
275
+
276
+ // 兼容旧 API:将 monaco 暴露到 window.monaco
277
+ globalAPI: false,
278
+ }),
279
+ ],
280
+ })
281
+ ```
282
+
283
+ 应用代码无需任何胶水:
284
+
285
+ ```ts
286
+ import * as monaco from 'monaco-editor'
287
+
288
+ monaco.editor.create(document.getElementById('editor')!, {
289
+ value: 'function hi() { console.log("hello monaco") }',
290
+ language: 'typescript',
291
+ theme: 'vs-dark',
292
+ automaticLayout: true,
293
+ })
294
+ ```
295
+
296
+ > 详细说明见 [Monaco Editor 指南](https://nasti.zixiaolabs.com/pages/monaco.html)。
297
+
246
298
  ## License
247
299
 
248
300
  [MIT](./LICENSE) - Made by [zixiao-labs](https://github.com/zixiao-labs)