使用Vue 2和Vue 3來管理Lerna monorepo中的套件的重寫標題為:使用Vue 2和Vue 3來管理Lerna monorepo中的模組
P粉221046425
2023-08-27 09:48:38
<p>我正在嘗試建立一個貢獻到使用Lerna管理多個套件和npm作為套件管理器的開源庫的PR。 </p>
<p>該函式庫已經支援使用套件<code>support-vue</code>的Vue 2。我的PR的目的是透過建立名為<code>support-vue3</code>的新套件來新增Vue 3支援。 </p>
<p>套件<code>support-vue</code>依賴Vue 2和Vue 2相容版本的某些套件(<code>vue-router</code>,<code>@vue/test -utils</code>),而套件<code>support-vue3</code>依賴這些套件的Vue 3相容版本。 </p>
<p>我無法解決的問題是如何在<code>support-vue</code>和<code>support-vue3</code>中使用不同版本的Vue和相關套件。據我所知,Lerna只會將一個版本提升到根<code>node_modules</code>(在這種情況下是Vue 2)。我一次只能讓一個套件工作,這取決於安裝了哪個版本的Vue。 </p>
<p>我需要為每個套件安裝不同版本的Vue。 </p>
<p>我嘗試透過在<code>package.json</code>中使用套件別名來解決這個問題,像這樣:</p>
<pre class="brush:json;toolbar:false;">{
"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",
…
}
}
</pre>
<p>並從這些別名導入Vue,但是<code>@vue/test-utils</code>和其他需要Vue作為對等依賴項的包中找不到<code>vue</code>依賴項。 </p>
<p>我還嘗試在<code>lerna.json</code>中添加過濾器,以禁用將vue提升到根<code>package.json</code>並將vue僅添加到支援包的依賴項中,但無濟於事。 </p>
<p>在每個包中使用不同版本的Vue是否可能在Lerna中實現,還是這是一個死胡同? </p>
我認為Lerna不支持這樣的事情,你可以用SingleSpa或OpenComponent來代替