monorepo同时编译vue2和vue3项目

2023年2月16日 ... ☕️ 1 min read

一个monorepo项目中使用了vue3作为主要版本,vite编译没啥大问题。但是最近一些特殊需要,需要单独加一个vue2的项目。照着网络一番配置,最后pnpm run build的时候,报错了

failed to load config from .../vite.config.js
error during build:
Error: 

Vue packages version mismatch:

- vue@3.2.45 (/node_modules/.pnpm/vue@3.2.45/node_modules/vue/index.js)
- vue-template-compiler@2.7.14 (/node_modules/.pnpm/registry.npmmirror.com+vue-template-compiler@2.7.14/node_modules/vue-template-compiler/package.json)

原因是vue-template-compiler@2.7.14会自动找依赖,包里并没有指定vue@2.7.14的依赖。所以用pnpm作为包管理工具的时候,就会出错。

解决办法

在package.json配置中添加:

{
  "pnpm": {
    "packageExtensions": {
      "vue-template-compiler": {
        "peerDependencies": {
          "vue": "2.7.14"
        }
      }
    }
  }
}

手动指定依赖之后,再次install,就可以正常运行了。

#vue

SideEffect is a blog for front-end web development.
Code by Axiu / rss