以下以 npm 为例,yarn 同理。
(持续更新、记录)
操作规范
- 优先使用 npm v5.4.2 以上的 npm 版本,以保证 npm 的最基本先进性和稳定性。
- 项目的第一次搭建使用 npm install 安装依赖包,并提交 package.json、package-lock.json,而不提交 node_modules 目录。
- 其他项目成员首次 checkout/clone 项目代码后,执行一次 npm install 安装依赖包。
- 对于升级依赖包的需求:
- 依靠 npm update 命令升级到新的小版本;
- 依靠 npm install @ 升级大版本;
- 也可以手动修改 package.json 中版本号,并执行 npm install 来升级版本;
- 本地验证升级后新版本无问题,提交新的 package.json、package-lock.json 文件。
- 对于降级依赖包的需求:执行 npm install @ 命令,验证没问题后,提交新的 package.json、package-lock.json 文件。
- 删除某些依赖:
- 执行 npm uninstall 命令,验证没问题后,提交新的 package.json、package-lock.json 文件;
- 或者手动操作 package.json,删除依赖,执行 npm install 命令,验证没问题后,提交新的 package.json、package-lock.json 文件。
- 任何团队成员提交 package.json、package-lock.json 更新后,其他成员应该拉取代码后,执行 npm install 更新依赖。
- 任何时候都不要修改 package-lock.json。
- 如果 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 文件提交到代码版本仓库。