如果我手动将软件包添加到package.json
,然后运行npm install
,则我的package-lock.json
将使用该新软件包的依赖项进行更新。
但是,如果我随后从package.json
中的npm install
中手动删除了该软件包,则该软件包的依赖项不会从package-lock.json
中删除。
那么-package-lock.json
仅在package.json
中添加/更新软件包时才被修改吗?不是在删除时?
答案 0 :(得分:1)
这是npm的已知问题。
查看问题:package-lock.json file not updated after package.json file is changed
“目前,我正在通过将npm install命令更改为rm -f package-lock.json && npm install来解决此问题。显然,这不是一个优雅的解决方案,在某种程度上违背了使用锁定文件放在首位。”
rm -f package-lock.json && npm install
这应该在以下位置解决:https://github.com/npm/npm/pull/17508
请参阅文章:https://medium.com/coinmonks/everything-you-wanted-to-know-about-package-lock-json-b81911aa8ab8,以获得更好的理解。
答案 1 :(得分:0)
package-lock.json将您当前安装的每个软件包的版本设置为石头,并且npm在运行npm install时将使用这些确切的版本。
默认情况下,NPM将读取package-lock.json文件。
因此,在第一种情况下,npm从package.json中读取软件包条目,因为这是唯一包含特定软件包条目的文件。 而在第二种情况下,它是从package-lock.json中读取它的,就像它的默认行为一样