我得到package-lock.json
代表的内容,但我不明白添加此文件后插入符号范围如何工作?
假设我有一个包(my-module
),我希望拥有所有新的非破坏版本,而无需手动指定新版本。我安装了最新版本,这是package.json
文件中的结果:
"my-module": "^4.1.1"
然而,package-lock.json
也正在更新,将my-module
的版本修改为4.1.1
。
下次新版本来自my-module
:4.1.2
。运行npm i
将不安装它,因为package-lock.json
中的版本已修复为旧版本。
如何在不创建新npm i
文件的情况下my-module
下载package-lock.json
的最新非破坏版本?这个文件是否因使用插入符号范围而无效?
答案 0 :(得分:3)
我们提出了使用preinstall
的{{1}}功能的想法。
所以在脚本标签下的package.json
文件中添加:
package.json
。
由于"preinstall": "npm update"
仅更新受插入符范围语法影响的软件包,因此您可以同时拥有npm update
和最新更新。
答案 1 :(得分:2)
虽然我不仅仅喜欢发布文档 verbatim ,但我认为这是解释为什么您要的正是 package-lock的最佳来源。 json 的设计目的是:
对于任何由npm修改 node_modules 树或 package.json 的操作,会自动生成
package-lock.json 。
它描述了生成的确切树,因此无论中间依赖项更新如何,后续安装都可以生成相同的树。
将 package.json 馈入npm i
时,操作结果是文件系统 node_modules ,与中声明的所有依赖项一致> package.json 文件。
此操作始终不会产生相同的结果:即使使用完全相同的 package.json 文件也是如此。 npm i
被设计为这样做的理由很充分,