# Monaco Editor NPM包配置说明 ## ✅ 已完成的配置 ### 1. NPM包安装 已在 `package.json` 中安装: - `monaco-editor`: ^0.55.1 - Monaco Editor核心包 - `@monaco-editor/loader`: ^1.4.0 - Monaco Editor加载器 - `monaco-editor-webpack-plugin`: ^7.1.1 - Webpack打包插件(devDependencies) ### 2. Webpack配置 在 `vue.config.js` 中已配置: ```javascript new MonacoEditorPlugin({ languages: ['javascript', 'typescript', 'json'], features: ['coreCommands', 'find'], publicPath: process.env.NODE_ENV === 'production' ? './' : '/' }) ``` ### 3. 组件配置 在 `MonacoEditor.vue` 和 `Playground.vue` 中已配置: ```javascript // 配置loader使用本地打包的文件,而不是CDN if (loader.config) { const vsPath = process.env.NODE_ENV === 'production' ? './js/vs' // 生产环境使用相对路径 : '/js/vs'; // 开发环境使用绝对路径 loader.config({ paths: { vs: vsPath } }); } ``` --- ## 🔍 工作原理 ### 打包流程 1. `monaco-editor-webpack-plugin` 在构建时将 Monaco Editor 文件打包到 `js/vs/` 目录 2. `@monaco-editor/loader` 通过配置的路径加载本地文件 3. 不再从 CDN(如 `https://cdn.jsdelivr.net`)加载 ### 文件结构(构建后) ``` nfd-front/ ├── js/ │ └── vs/ │ ├── editor/ │ ├── loader/ │ ├── base/ │ └── ... └── index.html ``` --- ## 🧪 验证方法 ### 1. 检查网络请求 打开浏览器开发者工具 → Network标签: - ✅ 应该看到请求 `/js/vs/...` 或 `./js/vs/...` - ❌ 不应该看到请求 `cdn.jsdelivr.net` 或其他CDN域名 ### 2. 检查构建产物 ```bash cd web-front npm run build ls -la nfd-front/js/vs/ ``` 应该看到 Monaco Editor 的文件被打包到本地。 ### 3. 离线测试 1. 断开网络连接 2. 访问 Playground 页面 3. ✅ 编辑器应该正常加载(因为使用本地文件) 4. ❌ 如果使用CDN,编辑器会加载失败 --- ## 📝 修改的文件 1. ✅ `web-front/src/components/MonacoEditor.vue` - 添加了 `loader.config()` 配置,明确使用本地路径 2. ✅ `web-front/src/views/Playground.vue` - 在 `initMonacoTypes()` 中添加了相同的配置 3. ✅ `web-front/vue.config.js` - 添加了 `publicPath` 配置,确保路径正确 --- ## 🚀 部署 ### 开发环境 ```bash cd web-front npm install # 确保依赖已安装 npm run serve ``` 访问 `http://127.0.0.1:6444/playground`,编辑器应该从本地加载。 ### 生产环境 ```bash cd web-front npm run build ``` 构建后,Monaco Editor 文件会打包到 `nfd-front/js/vs/` 目录。 --- ## ⚠️ 注意事项 ### 1. 文件大小 Monaco Editor 打包后会增加构建产物大小(约2-3MB),但这是正常的。 ### 2. 首次加载 - 开发环境:文件从 webpack dev server 加载 - 生产环境:文件从本地 `js/vs/` 目录加载 ### 3. 缓存 浏览器会缓存 Monaco Editor 文件,更新后可能需要清除缓存。 --- ## 🔧 故障排查 ### 问题:编辑器无法加载 **检查**: 1. 确认 `npm install` 已执行 2. 检查浏览器控制台是否有错误 3. 检查 Network 标签,确认文件路径是否正确 ### 问题:仍然从CDN加载 **解决**: 1. 清除浏览器缓存 2. 确认 `loader.config()` 已正确配置 3. 检查 `vue.config.js` 中的 `publicPath` 配置 ### 问题:构建后路径错误 **解决**: - 检查 `publicPath` 配置 - 确认生产环境的相对路径 `./js/vs` 正确 --- ## ✅ 优势 1. **离线可用** - 不依赖外部CDN 2. **加载速度** - 本地文件通常比CDN更快 3. **版本控制** - 使用固定版本的Monaco Editor 4. **安全性** - 不依赖第三方CDN服务 5. **稳定性** - CDN故障不影响使用 --- **配置状态**: ✅ 已完成 **验证状态**: ⚠️ 待测试 **建议**: 运行 `npm run build` 并检查构建产物