zoukankan      html  css  js  c++  java
  • 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 中。解决了这个问题。

  • 相关阅读:
    SonarQube
    Gerrit
    Jenkins
    Jenkins
    GitLab
    GitLab
    GitLab
    centos7配置国内yum源
    CentOS7 ping: unknown host www.baidu.com
    VirtualBox下安装CentOS7系统
  • 原文地址:https://www.cnblogs.com/wfblog/p/13972289.html
Copyright © 2011-2022 走看看