为啥“npm install”不重写 package-lock.json?如果不存在也不生成新的?
Posted
技术标签:
【中文标题】为啥“npm install”不重写 package-lock.json?如果不存在也不生成新的?【英文标题】:Why does not “npm install” rewrite package-lock.json? And also not generate new one if not exist?为什么“npm install”不重写 package-lock.json?如果不存在也不生成新的? 【发布时间】:2017-12-31 14:53:51 【问题描述】:我希望在 package.json 中添加新的依赖项并运行 npm install 后,我的 package-lock.json 文件会发生变化——但 package-lock.json 并没有改变。 设置: 节点版本 6.11.0 npm 版本 3.10.10 在运行 npm install 后,我尝试删除旧的 package-lock.json - 没有生成新文件。 谁能告诉我如何更新 package-lock.json? 编辑: 有时我和我的同事有不同的 npm 版本,所以我在代码库中有 package-lock.json,但无法更新它,因为我当前的 npm 版本不支持此功能。更新后一切正常。
【问题讨论】:
【参考方案1】:package-lock.json
在 npm v5 中引入。
您的 npm v3.10.10 版本没有使用它,您可能需要更新它
【讨论】:
【参考方案2】:有时我和我的同事有不同的 npm 版本,所以我在代码库中有 package-lock.json,但无法更新它,因为我当前的 npm 版本不支持此功能。更新后一切正常。
【讨论】:
【参考方案3】:为什么“npm install”不重写 package-lock.json?
因为package-lock.json
的目的是告诉npm
确切地安装哪些模块(如果存在)。如果不存在,npm 会将其写入“缓存”依赖树以供后续安装。
只需rm package-lock.json
并再次安装以更新package-lock.json
如果不存在也不生成新的?
如果您没有生成任何package-lock.json
,则很可能是旧版本的npm
不支持它,或您已将npm
配置为不生成它(这是可能的)。
【讨论】:
删除旧的锁定文件没有帮助。我可以问一下如何配置 npm 来生成这样的文件吗? “npm set package-lock true”没有帮助。 添加了一个答案,因为你的没有提供具体的解决方案 + 具有误导性(它不是“最有可能”是旧版本或错误配置,而是旧版本)。以上是关于为啥“npm install”不重写 package-lock.json?如果不存在也不生成新的?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 `npm install` 会为同一个 `package.json` 文件生成不同的 `package-lock.json` 文件?
为啥在 `npm install` 时`package-lock.json` 会导致 docker 容器构建失败?
为啥“npm install”会修改 package-lock.json?那为啥要把它提交给git呢?
为啥“npm install”在我的“package-lock.json”文件中为我的包添加“node_modules”前缀?