npm 使用Vue 2和Vue 3管理Lerna monorepo和软件包

f45qwnt8  于 2023-02-23  发布在  其他
关注(0)|答案(1)|浏览(226)

我试图创建公关贡献开源库使用Lerna来管理多个软件包和npm作为软件包管理器。
库已经支持使用包support-vue的Vue 2。我的PR的目的是通过创建名为support-vue3的新包来添加Vue 3支持。
软件包support-vue取决于某些软件包(vue-router@vue/test-utils)的Vue 2和Vue 2兼容版本,而软件包support-vue3取决于这些软件包的Vue3兼容版本。
我无法解决的问题是如何在support-vuesupport-vue3中使用不同版本的Vue和相关包。AFAIK Lerna只将一个版本提升到根node_modules(本例中为Vue 2)。根据安装的Vue版本,我一次只能让一个包工作。
我需要为每个包安装不同版本的Vue。
我尝试在package.json中使用包别名来绕过它,如下所示:

{
 "devDependencies": {
   "vue2": "npm:vue@2",
   "vue3": "npm:vue@3",
   "@vue/test-utils1": "npm:@vue/test-utils@1",
   "@vue/test-utils2": "npm:@vue/test-utils@2",
   ...
 }
}

并从这些包中导入Vue,但是在@vue/test-utils和其他需要Vue作为对等依赖的包中找不到vue依赖。
我还尝试在lerna.json中添加过滤器,以禁止将vue提升到根package.json,并仅将vue添加到支持包的依赖项中,但没有效果。
是否可以在每个Lerna Package 中使用不同版本的Vue,或者这是一个死胡同?

41ik7eoe

41ik7eoe1#

我不认为Lerna支持这样的东西,你可以使用SingleSpa或OpenComponent代替

相关问题