如何用 package-lock.json 中的版本覆盖 package.json "latest" dist-tag?
How to override package.json "latest" dist-tag with version from package-lock.json?
我想在我的 package.json
中为内部包使用 latest
分发标签。这允许我在本地环境中 npm install
时始终获得他们的最新版本,而无需更新所有外部第 3 方。
当我修复已部署的版本时出现问题:
- 出于修补程序目的,我为应用程序的每个已部署版本生成并保存
package-lock.json
。
- 但是当我
npm install
准备热修复时,package.json
和package-lock.json
中的内部包版本之间存在冲突:package-lock.json
指向使用的版本在已部署的应用程序中,但 package.json
指向 latest
分发标记,它本身指向更高版本。
- 由于
package-lock.json
中指定的版本不适合 package.json
中指定的版本范围(非常具体 - 只有最新版本才适合),npm install
忽略 package-lock.json
并安装最新版本。
我通过文档和互联网进行了搜索,但没有找到针对该问题的任何现有解决方案:
- 我没有在
package.json
中找到任何 npm install
标志来处理 package-lock.json
版本的优先级高于分发标记
- 我找不到任何工具可以从
package-lock.json
重建 package.json
,或者至少用 package-lock.json
的特定版本替换 package.json
中的别名(分发标签) ].
我的问题是否有任何解决方案(除了编写一个将实施最后一种方法的工具)?
沙盒:
https://github.com/maxlk/npm-lock-version-should-override-latest(克隆和 运行 npm install
或其替代)
我找到了解决方案 - 使用 npm ci
而不是 npm install
。
它不会错误退出,尽管文档中有声明:https://docs.npmjs.com/cli/ci
If dependencies in the package lock do not match those in package.json
, npm ci
will exit with an error, instead of updating the package lock.
我想在我的 package.json
中为内部包使用 latest
分发标签。这允许我在本地环境中 npm install
时始终获得他们的最新版本,而无需更新所有外部第 3 方。
当我修复已部署的版本时出现问题:
- 出于修补程序目的,我为应用程序的每个已部署版本生成并保存
package-lock.json
。 - 但是当我
npm install
准备热修复时,package.json
和package-lock.json
中的内部包版本之间存在冲突:package-lock.json
指向使用的版本在已部署的应用程序中,但package.json
指向latest
分发标记,它本身指向更高版本。 - 由于
package-lock.json
中指定的版本不适合package.json
中指定的版本范围(非常具体 - 只有最新版本才适合),npm install
忽略package-lock.json
并安装最新版本。
我通过文档和互联网进行了搜索,但没有找到针对该问题的任何现有解决方案:
- 我没有在
package.json
中找到任何 - 我找不到任何工具可以从
package-lock.json
重建package.json
,或者至少用package-lock.json
的特定版本替换package.json
中的别名(分发标签) ].
npm install
标志来处理 package-lock.json
版本的优先级高于分发标记
我的问题是否有任何解决方案(除了编写一个将实施最后一种方法的工具)?
沙盒:
https://github.com/maxlk/npm-lock-version-should-override-latest(克隆和 运行 npm install
或其替代)
我找到了解决方案 - 使用 npm ci
而不是 npm install
。
它不会错误退出,尽管文档中有声明:https://docs.npmjs.com/cli/ci
If dependencies in the package lock do not match those in
package.json
,npm ci
will exit with an error, instead of updating the package lock.