Private
Public Access
1
0

重构:CodeMirror 架构优化

核心优化:
- 新增统一导出避免多实例问题
- 语言加载器从动态改为静态导入
- 使用 Compartment 实现主题/语言动态切换

依赖清理:
- 移除废弃的 @codemirror/highlight
- 移除不再使用的 @codemirror/legacy-modes

组件优化:
- CodeEditor 添加内容更新防抖
- 改进亮色主题样式
- 移除不必要的编辑器重建逻辑

构建配置:
- 简化 Vite manualChunks 配置
- 优化依赖预加载列表

文档清理:
- 删除过期的代码审查文档
- 更新版本号 0.3.0 → 0.3.2
This commit is contained in:
2026-02-06 11:32:27 +08:00
parent 9eb39fbb8f
commit 0229cab550
30 changed files with 592 additions and 3971 deletions

102
web/package-lock.json generated
View File

@@ -10,7 +10,6 @@
"dependencies": {
"@arco-design/web-vue": "^2.54.0",
"@codemirror/commands": "^6.10.1",
"@codemirror/highlight": "^0.19.8",
"@codemirror/lang-cpp": "^6.0.3",
"@codemirror/lang-css": "^6.3.1",
"@codemirror/lang-go": "^6.0.1",
@@ -25,7 +24,6 @@
"@codemirror/lang-sql": "^6.10.0",
"@codemirror/lang-yaml": "^6.1.2",
"@codemirror/language": "^6.12.1",
"@codemirror/legacy-modes": "^6.5.2",
"@codemirror/state": "^6.5.3",
"@codemirror/theme-one-dark": "^6.1.3",
"@codemirror/view": "^6.39.8",
@@ -211,71 +209,6 @@
"@lezer/common": "^1.1.0"
}
},
"node_modules/@codemirror/highlight": {
"version": "0.19.8",
"resolved": "https://registry.npmmirror.com/@codemirror/highlight/-/highlight-0.19.8.tgz",
"integrity": "sha512-v/lzuHjrYR8MN2mEJcUD6fHSTXXli9C1XGYpr+ElV6fLBIUhMTNKR3qThp611xuWfXfwDxeL7ppcbkM/MzPV3A==",
"deprecated": "As of 0.20.0, this package has been split between @lezer/highlight and @codemirror/language",
"license": "MIT",
"dependencies": {
"@codemirror/language": "^0.19.0",
"@codemirror/rangeset": "^0.19.0",
"@codemirror/state": "^0.19.3",
"@codemirror/view": "^0.19.39",
"@lezer/common": "^0.15.0",
"style-mod": "^4.0.0"
}
},
"node_modules/@codemirror/highlight/node_modules/@codemirror/language": {
"version": "0.19.10",
"resolved": "https://registry.npmmirror.com/@codemirror/language/-/language-0.19.10.tgz",
"integrity": "sha512-yA0DZ3RYn2CqAAGW62VrU8c4YxscMQn45y/I9sjBlqB1e2OTQLg4CCkMBuMSLXk4xaqjlsgazeOQWaJQOKfV8Q==",
"license": "MIT",
"dependencies": {
"@codemirror/state": "^0.19.0",
"@codemirror/text": "^0.19.0",
"@codemirror/view": "^0.19.0",
"@lezer/common": "^0.15.5",
"@lezer/lr": "^0.15.0"
}
},
"node_modules/@codemirror/highlight/node_modules/@codemirror/state": {
"version": "0.19.9",
"resolved": "https://registry.npmmirror.com/@codemirror/state/-/state-0.19.9.tgz",
"integrity": "sha512-psOzDolKTZkx4CgUqhBQ8T8gBc0xN5z4gzed109aF6x7D7umpDRoimacI/O6d9UGuyl4eYuDCZmDFr2Rq7aGOw==",
"license": "MIT",
"dependencies": {
"@codemirror/text": "^0.19.0"
}
},
"node_modules/@codemirror/highlight/node_modules/@codemirror/view": {
"version": "0.19.48",
"resolved": "https://registry.npmmirror.com/@codemirror/view/-/view-0.19.48.tgz",
"integrity": "sha512-0eg7D2Nz4S8/caetCTz61rK0tkHI17V/d15Jy0kLOT8dTLGGNJUponDnW28h2B6bERmPlVHKh8MJIr5OCp1nGw==",
"license": "MIT",
"dependencies": {
"@codemirror/rangeset": "^0.19.5",
"@codemirror/state": "^0.19.3",
"@codemirror/text": "^0.19.0",
"style-mod": "^4.0.0",
"w3c-keyname": "^2.2.4"
}
},
"node_modules/@codemirror/highlight/node_modules/@lezer/common": {
"version": "0.15.12",
"resolved": "https://registry.npmmirror.com/@lezer/common/-/common-0.15.12.tgz",
"integrity": "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==",
"license": "MIT"
},
"node_modules/@codemirror/highlight/node_modules/@lezer/lr": {
"version": "0.15.8",
"resolved": "https://registry.npmmirror.com/@lezer/lr/-/lr-0.15.8.tgz",
"integrity": "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==",
"license": "MIT",
"dependencies": {
"@lezer/common": "^0.15.0"
}
},
"node_modules/@codemirror/lang-cpp": {
"version": "6.0.3",
"resolved": "https://registry.npmmirror.com/@codemirror/lang-cpp/-/lang-cpp-6.0.3.tgz",
@@ -458,15 +391,6 @@
"style-mod": "^4.0.0"
}
},
"node_modules/@codemirror/legacy-modes": {
"version": "6.5.2",
"resolved": "https://registry.npmmirror.com/@codemirror/legacy-modes/-/legacy-modes-6.5.2.tgz",
"integrity": "sha512-/jJbwSTazlQEDOQw2FJ8LEEKVS72pU0lx6oM54kGpL8t/NJ2Jda3CZ4pcltiKTdqYSRk3ug1B3pil1gsjA6+8Q==",
"license": "MIT",
"dependencies": {
"@codemirror/language": "^6.0.0"
}
},
"node_modules/@codemirror/lint": {
"version": "6.9.2",
"resolved": "https://registry.npmmirror.com/@codemirror/lint/-/lint-6.9.2.tgz",
@@ -478,25 +402,6 @@
"crelt": "^1.0.5"
}
},
"node_modules/@codemirror/rangeset": {
"version": "0.19.9",
"resolved": "https://registry.npmmirror.com/@codemirror/rangeset/-/rangeset-0.19.9.tgz",
"integrity": "sha512-V8YUuOvK+ew87Xem+71nKcqu1SXd5QROMRLMS/ljT5/3MCxtgrRie1Cvild0G/Z2f1fpWxzX78V0U4jjXBorBQ==",
"deprecated": "As of 0.20.0, this package has been merged into @codemirror/state",
"license": "MIT",
"dependencies": {
"@codemirror/state": "^0.19.0"
}
},
"node_modules/@codemirror/rangeset/node_modules/@codemirror/state": {
"version": "0.19.9",
"resolved": "https://registry.npmmirror.com/@codemirror/state/-/state-0.19.9.tgz",
"integrity": "sha512-psOzDolKTZkx4CgUqhBQ8T8gBc0xN5z4gzed109aF6x7D7umpDRoimacI/O6d9UGuyl4eYuDCZmDFr2Rq7aGOw==",
"license": "MIT",
"dependencies": {
"@codemirror/text": "^0.19.0"
}
},
"node_modules/@codemirror/state": {
"version": "6.5.3",
"resolved": "https://registry.npmmirror.com/@codemirror/state/-/state-6.5.3.tgz",
@@ -506,13 +411,6 @@
"@marijn/find-cluster-break": "^1.0.0"
}
},
"node_modules/@codemirror/text": {
"version": "0.19.6",
"resolved": "https://registry.npmmirror.com/@codemirror/text/-/text-0.19.6.tgz",
"integrity": "sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA==",
"deprecated": "As of 0.20.0, this package has been merged into @codemirror/state",
"license": "MIT"
},
"node_modules/@codemirror/theme-one-dark": {
"version": "6.1.3",
"resolved": "https://registry.npmmirror.com/@codemirror/theme-one-dark/-/theme-one-dark-6.1.3.tgz",