Nodejs npm5 package-lock.json 明明这个升级就个好事儿啊 哪里坑了
Nodejs npm5 package-lock.json 明明这个升级就个好事儿啊 哪里坑了
node 升级到了 8.0 后 npm 也随之升到 5.0 执行 npm i 后会出现 package-lock.json 里面有安装的依赖的具体版本甚至下载地址 而且第一次安装速度也嗖嗖的提升了 n 倍 如果这个文件存在 再次安装的时候不会将依赖自动更新 这难道不是好事吗 为什么有那么多人说这是坑 需要升级的自己 @xxx 版本呗 哼 生气😠
的确还是有坑
具体是指什么?还在 NPM3,没敢升
npm5 有 bug, 详见 github issues, 我就遇到过几次,在生产环境依赖安不上去… 但是用 yarn 就可以…
关于Node.js中npm 5版本引入的package-lock.json
文件的“坑”,以下是一些专业分析:
package-lock.json
文件在npm 5及以上版本自动生成,用于锁定当前项目的依赖包的版本,确保在不同环境或机器上安装依赖包时,都会安装相同的版本,保证项目的一致性和可重复性。这一特性本身是一个好事,但在实际使用中,可能会遇到以下问题:
-
依赖版本锁定过死:
package-lock.json
会锁定所有依赖及其子依赖的版本,这可能导致在依赖包有新版本发布时,项目无法自动获取这些更新。例如,当package.json
中某个依赖的版本范围更新后,如果package-lock.json
中的版本与之不兼容,npm会更新package-lock.json
而不是直接安装新版本。 -
手动更新依赖的困扰: 在直接修改
package.json
中的依赖版本后,如果希望安装新版本,可能需要手动执行npm install xxx@yy
来指定版本号,而不是简单地运行npm install
。
尽管存在这些问题,但package-lock.json
在提升安装速度、避免版本冲突方面确实发挥了重要作用。因此,建议在使用时权衡利弊,合理利用其特性来确保项目的稳定性和可维护性。