npm 依賴包 的管理【即 node_modules目錄的設計原理】


參考: https://www.cnblogs.com/wonyun/p/9349691.html

 

 

npm 安裝同一個包的多個版本【 用npm alias來實現】https://blog.csdn.net/wozhenhaokan/article/details/105504721  或  https://www.cnblogs.com/amiezhang/p/13166240.html

說明:如果一個包從頭用到尾,我們一般不會再去引入這個包的另外版本。但是有的項目會碰到 必須 要另外弄個版本的包,或者復制這個版本的包的情況。

比如1: npm里面的一個包A,項目都快開發好了,突然新需求加入進來。需要用到 包 A新版的功能【新版 和 舊版存在兼容性問題】。這時就需要兩個版本的包 A 同時存在 node_modules 里。【這種情況出現的情況比較少

比如2:npm的 包 B 里面引入了包 A【B 對 A 進行了封裝,項目中用 包 B】。快開發好,突然有個功能用 包 B 實現不了【包B 封裝的 功能不上很徹底】,只能用 A。這時項目中 的 包 B 引用了 A,項目文件中 也引用 A。

     導致 打包后運行報錯【開發模式沒有問題,具體原因不清楚。可能是打包編譯時,包 B 對A的 引用 已經 編譯了;所以項目中對 A 的引用,就不在編譯。而兩種 編譯 的 使用模式 不一致導致的】。

實踐經歷:  在開發 "市民卡會務客戶端"  electron 桌面軟件 時,引用 tim-js-sdk 包就碰到這個問題。

     視頻會議 功能  使用 trtc-electron-education 包【對 tim-js-sdk、trtc-electron-sdk 兩個包進行了封裝。但是這個包沒有把 直播功能封裝進去】 實現;直播 功能使用  tim-js-sdk、trtc-electron-sdk 實現。

     結果 因為 trtc-electron-education 引用了 tim-js-sdk,外面項目也引用了 tim-js-sdk。開發時沒有問題,打包后運行就報錯【但是 trtc-electron-sdk 這個包確沒有報錯,具體里面的 原因應該和 包的設計有關吧】。

     最后 利用 npm alias 實現了,同一個包,以兩種 npm 包名共存 在一個 node_modules 中。解決了這個問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM