我正在嘗試建立一個貢獻到使用Lerna管理多個套件和npm作為套件管理器的開源庫的PR。
該函式庫已經支援使用套件support-vue
的Vue 2。我的PR的目的是透過建立名為support-vue3
的新套件來新增Vue 3支援。
套件support-vue
依賴Vue 2和Vue 2相容版本的某些套件(vue-router
,@vue/test -utils
),而套件support-vue3
依賴這些套件的Vue 3相容版本。
我無法解決的問題是如何在support-vue
和support-vue3
中使用不同版本的Vue和相關套件。據我所知,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僅添加到支援包的依賴項中,但無濟於事。
在每個包中使用不同版本的Vue是否可能在Lerna中實現,還是這是一個死胡同?
我認為Lerna不支持這樣的事情,你可以用SingleSpa或OpenComponent來代替