iT邦幫忙

0

npm安裝套件的依賴問題

  • 分享至 

  • xImage

有個專案的安全性報告顯示需要把某個套件(packageA)依賴的另一個套件(packageB)版本提升如:
packageB@1.0.0 -> packageB@2.0.0

正常來說就是看packageA新的版本有沒有主動提升packageB@2.0.0
但是packageA當下最新的版本依然是使用packageB@1.0.0的情況下,我的作法是在專案的package.json裝了packageB@2.0.0,然後把package.lock.json裡packageA針對packageB的安裝從dependencies改為peerDependencies,因為有可能packageB被好幾個套件都用到,並且不同套件依賴的packageB有各自的版本,peerDependencies可以達到統一版本

packageA: {
...
peerDependencies:{
packageB: ^2.0.0
}
}

改完後需要重新update packageB,package.lock.json會讓packageA在安裝packageB時以我主動裝的packageB@2.0.0為依賴對象,就不會再裝本來的packageB@1.0.0,先不論強制升級套件不提供的版本合理性,單純以"自行更改某套件下的相依套件使用特定版本"這件事改法是對的方式嗎?

因為我只要一更新packageA版本,package.lock.json就會被覆蓋變回他本來的packageB@1.0.0,想問的第二個問題是如果我自行改了package.lock.json,有沒有可能藉由設定某些參數讓自訂的peerDependencies即使在更新後還能保留?

題外話,看了網路的文章,針對peerDependencies好像都是開發套件作者把一些覺得需要限制版本的套件才寫在package.json的peerDependencies裡,讓其他人安裝後有相依性

套件版本是一定要達到報告所要求的版本,或是有其他想法也可以提出,謝謝

rew87516 iT邦新手 4 級 ‧ 2022-09-19 16:03:37 檢舉
再製 packageA 為 packageA' 後更新你要的依賴套件版本,就直接取代如何
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答