多Vue.js版本构建问题:Yarn/NPM工作区依赖版本冲突
解决Monorepo中多版本Vue及依赖版本冲突问题
锁定版本是直接有效的解决方案
直接在frontend/v2的package.json里明确指定与TypeScript 3.9.7兼容的@types/express-serve-static-core版本(比如^4.17.31,该版本适配TS3.x),将其添加到devDependencies中:"devDependencies": { // 其他依赖... "@types/express-serve-static-core": "^4.17.31" }重新执行
npm install或yarn install后,就能强制安装指定的兼容版本。用包管理器的版本强制覆盖功能
不想修改子项目配置的话,可在根目录package.json中配置全局覆盖规则:- 对于npm(v8.3及以上):使用
overrides字段指定仅针对frontend/v2工作区的版本:"overrides": { "frontend/v2": { "@types/express-serve-static-core": "^4.17.31" } } - 对于Yarn:使用
resolutions字段做同样的强制指定:"resolutions": { "frontend/v2/@types/express-serve-static-core": "^4.17.31" }
这种方式会让包管理器优先使用指定版本,避免依赖提升(Hoisting)导致的高版本覆盖问题。
- 对于npm(v8.3及以上):使用
针对性禁用依赖提升(Hoisting)
让frontend/v2的依赖不被提升到根目录node_modules,而是保留在自身子目录中:- npm:在
frontend/v2的package.json中添加:"workspaces": { "nohoist": ["**/@types/express-serve-static-core", "**/@types/express-serve-static-core/**"] } - Yarn:在
frontend/v2的package.json中添加:"nohoist": ["@types/express-serve-static-core", "@types/express-serve-static-core/**"]
这样该依赖会单独安装在
frontend/v2/node_modules中,使用兼容的旧版本,不会和其他工作区的依赖冲突。- npm:在
内容的提问来源于stack exchange,提问作者The50
相关产品推荐
相关产品推荐

