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 添加新用户

如何在不需要 npm 的情况下设置语义发布?

我们如何在不重新加载页面的情况下使用 javascript/jQuery 更新 URL 或查询字符串?

如何在不修改 package.json 的情况下执行“npm update”?

npm中package-lock.json的作用:npm install安装时使用