我正在嘗試建立一個貢獻到使用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來代替