到底锁不锁 NPM 依赖树

首先看个问题 :package-lock.json 需要写进 .gitignore 吗

看两个已有的回答:

image.png
image.png

这是个团队的选择

写不写到 ignore 里面,取决于团队。是否需要稳定的codebase, 抑或是相信依赖包项目可以自己fix 一些问题而不会导致依赖混乱。这两者不可兼得

  • 稳定的codebase ,就是 lock 所有依赖包以及依赖包的依赖包版本,精确到 patch 版本号,保证每次项目构建都能跑起来。但是很多第三方库的bug还是bug,可能一直不被 fix,因为 lock 版本了。这种选择需要 开发者 手动升级版本库(按需升级 npm install [email protected]),并且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

https://juejin.im/post/5cb3fb09e51d456e660d448e

what-is-verdaccio

你可能感兴趣的:(到底锁不锁 NPM 依赖树)