簡體   English   中英

如何在 monorepo 中成功鎖定節點模塊依賴項?

[英]How can I successfully lock down node module dependencies in a monorepo?

我正在開發一個開源項目,該項目目前正在使用lerna來幫助管理具有多個包的單個存儲庫。 到目前為止,一切都很好,只是時不時會出現一些問題,因為我們目前沒有收縮包裝任何東西。 我一直在嘗試做一些 monorepo 版本的收縮包裝,這樣我們就不會受到所有依賴項的支配(令人驚訝的是,在發布過程中一切都經常出錯!)想知道我是否在正確的軌道上。

我最初希望使用我在以前的項目中熟悉的 npm shrinkwrap。 不幸的是lerna 似乎不支持 shrinkwrap

計划 B 是使用紗線,經過最初的一些困難,在切換到使用紗線工作區后似乎yarn install --frozen-lockfile至少我認為yarn install --frozen-lockfile正在做我想做的事情。

不幸的是,除了依賴關系鎖定之外,yarn 似乎並沒有幫助——一切都適用於 npm 和 lerna,但 lerna 和 yarn 工作區似乎會導致解決模塊的問題(甚至解決同一目錄中令人困惑的問題)。

也許切換到 yarn 無論如何都太過分了,所以我開始想知道更新版本的 npm 和package-lock.json是否是一個更好的主意。 不幸的是,看起來它需要對 lerna進行一些解決,此時我開始想知道 lerna 到底增加了多少。 也許放棄lerna會有所幫助?

那么, tl; dr ,有沒有人有一個很好的方法來鎖定 monorepo 中的模塊依賴關系?

我建議簡單地使用精確版本控制; 所以在你的package.json文件中,有像^3.4.2這樣的依賴項的版本號,將其更改為3.4.2 數字前的^ (或~ )表示版本范圍。 您可以使用保存精確配置選項--save-exact save-exact=true標志或通過將save-exact=true放在 repo 的.npmrc文件中來實現。 lerna add也支持精確選項

希望有幫助!

yarn是一個生產就緒的包管理器,本機支持 monorepos :)

使用yarn workspaces ,無需同時使用lerna作為 monorepo 管理器。

如果需要,您可以使用 lerna 的其他功能,但沒有理由使用 lerna 來安裝 monorepos(已經使用了紗線)。

如果在使用yarn安裝/管理 monorepo 時出現特定錯誤,請將它們添加到問題中。

注意事項:

  • --frozen-lockfile lockfile 在 yarn monorepo 中不做任何事情。 yarn有一個懸而未決的問題,我認為這個問題不會很快解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM