如何在没有任何副作用的情况下更新 package-lock.json 中的单个依赖项?
Posted
技术标签:
【中文标题】如何在没有任何副作用的情况下更新 package-lock.json 中的单个依赖项?【英文标题】:How do I update a single dependency in package-lock.json, without any side effects? 【发布时间】:2019-04-06 15:27:39 【问题描述】:我希望将我的应用程序中的以下 NPM (v5)
依赖项从版本 1.0.0
更新到 1.0.1
,而不对我的 package.json
文件进行任何更改。
"dependencies":
"package": "~1.0.0"
,
我当前的 package-lock.json 文件将依赖项引用为版本 1.0.0
,因此正如预期的那样,运行 npm install
会安装包的版本 1.0.0
。
问题在于运行npm install package@1.0.1
或npm update package
时,这两个命令似乎都会更改package.json
中的包版本引用方式
我可以运行一个命令来实现仅对 package-lock.json
文件的次要版本更新吗?
提前致谢!
【问题讨论】:
为什么要在不更新package.json
的情况下这样做?
@mihai 我们使用 tilda 字符来获取我们软件包的最新补丁版本。我认为我们没有理由需要更改在开发分支和发布分支之间引用包版本的方式。
【参考方案1】:
运行npm update <package>
。
这会将其更新为满足package.json
中指定要求的最新版本,并在package-lock.json
中反映更新。
【讨论】:
【参考方案2】:package-lock.json
由 npm 生成,没有 npm 很难修改,因为它包含包哈希。
如果您仅使用补丁版本 (~1.0.0
) 引用模块,我认为执行以下操作是安全的:
package.json
并删除
运行npm update package
。这将使用package-lock.json
作为参考,还将更新package-lock.json
恢复package.json
现在运行 npm update package
将不会更新 package.json
,因为 package-lock.json
是较新的版本
如果您正在寻找单行命令:
mv package.json package.json.tmp && npm update package && mv package.json.tmp package.json
同样,只有在处理补丁版本 (~1.0.0
) 时才能安全地执行此操作。如果您指定次要 (^1.0.0
) 或主要 (1.0.0
) 版本,您可能需要直接更新 package.json
。
【讨论】:
以上是关于如何在没有任何副作用的情况下更新 package-lock.json 中的单个依赖项?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在不安装包的情况下按字母顺序排列 package.json?
如何在没有任何错误的情况下更新 navigator.devicemedia 上的数据
在没有 Packager 的情况下运行 React Native iOS
如何在 ReactJS 中没有任何给定事件的情况下更新 UI [重复]