NPM - 如何在不更新或添加 package.json 中描述的包的情况下安装新包
Posted
技术标签:
【中文标题】NPM - 如何在不更新或添加 package.json 中描述的包的情况下安装新包【英文标题】:NPM - How to install a new package without update or add packages described on package.json 【发布时间】:2018-08-01 08:54:55 【问题描述】:这是一个很难的问题,我会尽力解释。
如何在没有安装依赖或新包(定义在 package/-lock.json 中)的情况下添加新包?
例如:目前,我们有 package.json 和 package-lock.json 来维护版本控制。
但是,如果我们尝试添加新包,其他包(与 package.json 或 package-lock.json 相关)正在更新/添加。
目的只是添加新的包,在 package.json 和 package-lock.json 中添加这些包信息,而不影响当前安装的包。
【问题讨论】:
您是否担心模块版本的变化?如果是这样,您可以在 package.json 中为每个模块指定一个版本,并且不会在该版本之后更新它们。 已指定 package.json 上安装和描述的所有包。 如果你安装了所有的包并指定了它们的版本,那么它们不应该在npm install
上改变
@dodo 这也是我的想法。
【参考方案1】:
如果您不希望任何包自动更新,请转到 package.json 并进行一些更改。
例如改变
"react-native": "^0.56.1"
到 "react-native": "0.56.1"
只需删除您在版本声明之前看到的插入符号“^
”或波浪号“~
”。
^
”使 npm 能够更新次要版本更新(对于
以上示例 56 至 57 或更高)和
波浪号“~
”符号使 npm 能够更新补丁版本更新([major, minor, path]
元组中最右边的元素)
如果你声明你的包版本没有任何标志,它们将不会被更新。
【讨论】:
【参考方案2】:使用npm ci
而不是npm install
!
来自docs:
它永远不会写入 package.json 或任何包锁:安装基本上是冻结的。
还有其他注意事项和差异,我建议阅读文档以了解更多详细信息。例如,它将删除现有的node_module
目录。
【讨论】:
以上是关于NPM - 如何在不更新或添加 package.json 中描述的包的情况下安装新包的主要内容,如果未能解决你的问题,请参考以下文章
如何在不第二次运行 npm run build 的情况下更新 Vue js 的 dist 文件夹
如何在不重启 Spring Boot 的情况下使用 Spring Security 添加新用户
我们如何在不重新加载页面的情况下使用 javascript/jQuery 更新 URL 或查询字符串?