如何使用package-lock.json中的版本覆盖package.json "latest" dist-tag?



我想在内部包的package.json中使用latest分发标记。这使我能够在本地环境中npm install时始终获得他们的最新版本,而无需更新所有外部第三方。

当我热修复部署的verion:时,问题就来了

  • 为了修补程序,我为应用程序的每个部署版本生成并保存package-lock.json
  • 但当我在修补程序准备期间npm install时,package.jsonpackage-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

如果包锁中的依赖项与package.json中的依赖性不匹配,npm ci将退出并返回错误,而不是更新包锁。

最新更新