什麼是幽靈依賴

张小饭啊發表於2024-11-26

幽靈依賴的出現和npm的發展存在一定關係。

早起的npm1,2都是鏈式下載相關依賴,雖然鏈式解決了子依賴版本衝突問題,但是仍然無法重複使用相同版本依賴並且會導致檔案路徑過長無法解析等問題(路徑地址長度一般處理260多位)

如下圖所示:

為了解決無法重複使用相同版本依賴問題,npm3推出了扁平化解決方案,透過將相關子依賴提升來解決問題。npm3雖然解決了重複版本依賴問題,但是隨之帶來的是幽靈依賴問題,什麼是幽靈依賴這裡假如前端開發專案中引用了A庫,A庫引用了B庫,B庫引用了C庫,由於npm3的特性會將B和C進行扁平化處理,導致我們在專案制可以不安裝B和C的情況下直接使用B和C庫,如果當A庫更新以後不使用B庫,那麼我們開發的專案就會出現B,C庫報錯問題。

如下圖所示:

如何解決幽靈依賴:目前並沒有特別好的方法去解決幽靈依賴,只能儘量避免,不過我們可以使用pnpm實現幽靈依賴的一些規避。

相關文章