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 中。解决了这个问题。

posted @ 2020-11-14 09:21  吴飞ff  阅读(1524)  评论(0编辑  收藏  举报