关于npm包的一个问题

比如,我有个项目,需要
npm i pacakge1 -S
npm i pacakge2 -S

而pacakge2内部又依赖pacakge1

那最终构建出来的代码,是不是包含了两份package1呢?

如果是的话,有什么做法是最佳实践

阅读 2.2k
3 个回答
  1. 首先你要理解 semver
  2. 所有依赖管理都基于这个约定,

    1. 可以规定一定是某个版本 1.0.0
    2. 限制到小版本 ~1.0.0,即 1.0.5 也可以
    3. 限制到大版本 ^1.0.0,即 1.5.10 也可以
    4. 还有更多自己看
  3. 如果项目和 packageA 都依赖 packageB

    1. 如果两者相容,就只会安装一个版本
    2. 如果不相容,则会在 node_modules/packageA/node_modules/ 再安装一个 packageA 需要的 packageB
  4. 一般来说,小版本之间是功能性差异,不会有破坏性变化;同时,新版本会解决一些老版本的问题。所以,锚定大版本,尽量使用最新的小版本,是比较推荐的做法。
  5. 同时,一定要提交 package-lock.json,除了明确要升级依赖或调整依赖,大家都要使用 npm ci 的方式安装同样的依赖,确保不会因为依赖差异出现问题。

有个东西叫peerDependencies,在packageB的package.json中的peerDependencies:{PackageA: xx版本}

看依赖版本怎么设置的,一般情况下不会重复打包。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题