首先看个问题 :package-lock.json 需要写进 .gitignore 吗
看两个已有的回答:
这是个团队的选择
写不写到 ignore 里面,取决于团队。是否需要稳定的codebase, 抑或是相信依赖包项目可以自己fix 一些问题而不会导致依赖混乱。这两者不可兼得
稳定的codebase ,就是 lock 所有依赖包以及依赖包的依赖包版本,精确到 patch 版本号,保证每次项目构建都能跑起来。但是很多第三方库的bug还是bug,可能一直不被 fix,因为 lock 版本了。这种选择需要 开发者 手动升级版本库(按需升级 npm install package@x.x.x),并且commit lock 文件到 repo,供其他团队成员去跟随安装。
抑或是放开版本,随着时间推移,package.json 会拿到相对新的 第三方库,所以不同时间codebase 不同,也许会跑不起来,也许会 fix 掉一些lib 的问题。(自动升级)
lock 版本,实际上包括了 nested dependency,这是关键的。保证exact 版本号,精确的依赖树,这是稳定为王的选择,但是需要每个团队成员手动更新包之后,要确认能跑起来,并且 commit lock.json ,这是比较靠谱的
私有仓库搭建
.npmrc 文件 可用于配制私有仓库
@company:registry=https://xxx.com
Served by any NPM registry server. 可以参考下 verdaccio 这个库
参考资料
package-lock.json 需要写进 .gitignore 吗
what-is-the-role-of-the-package-lock-json