包管理器(npm 为例)飞行手册

135 阅读2分钟

以下以 npm 为例,yarn 同理。

(持续更新、记录)

操作规范

  1. 优先使用 npm v5.4.2 以上的 npm 版本,以保证 npm 的最基本先进性和稳定性。
  2. 项目的第一次搭建使用 npm install 安装依赖包,并提交 package.json、package-lock.json,而不提交 node_modules 目录。
  3. 其他项目成员首次 checkout/clone 项目代码后,执行一次 npm install 安装依赖包。
  4. 对于升级依赖包的需求:
    • 依靠 npm update 命令升级到新的小版本;
    • 依靠 npm install @ 升级大版本;
    • 也可以手动修改 package.json 中版本号,并执行 npm install 来升级版本;
    • 本地验证升级后新版本无问题,提交新的 package.json、package-lock.json 文件。
  5. 对于降级依赖包的需求:执行 npm install @ 命令,验证没问题后,提交新的 package.json、package-lock.json 文件。
  6. 删除某些依赖:
    • 执行 npm uninstall 命令,验证没问题后,提交新的 package.json、package-lock.json 文件;
    • 或者手动操作 package.json,删除依赖,执行 npm install 命令,验证没问题后,提交新的 package.json、package-lock.json 文件。
  7. 任何团队成员提交 package.json、package-lock.json 更新后,其他成员应该拉取代码后,执行 npm install 更新依赖。
  8. 任何时候都不要修改 package-lock.json。
  9. 如果 package-lock.json 出现冲突或问题,建议将本地的 package-lock.json 文件删除,引入远程的 package-lock.json 文件和 package.json,再执行 npm install 命令。

Q & A

要不要提交 lockfiles 到仓库?

  • 如果开发一个应用,建议把 package-lock.json 文件提交到代码版本仓库。这样可以保证项目组成员、运维部署成员或者 CI 系统,在执行 npm install 后,能得到完全一致的依赖安装内容。
  • 如果你的目标是开发一个给外部使用的库,那就要谨慎考虑了,因为库项目一般是被其他项目依赖的,在不使用 package-lock.json 的情况下,就可以复用主项目已经加载过的包,减少依赖重复和体积。
  • 如果开发的库依赖了一个精确版本号的模块,那么提交 lockfiles 到仓库可能会造成同一个依赖不同版本都被下载的情况。如果作为库开发者,有使用某个特定版本依赖的需要,一个更好的方式是定义 peerDependencies。

综上,如果是开发应用需要将 package-lock.json 文件提交到代码版本仓库,如果是开发公共库,则不需要将 package-lock.json 文件提交到代码版本仓库。