1

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

当我修复已部署的版本时,问题就出现了:

  • 出于修补程序的目的,我package-lock.json为应用程序的每个部署版本生成并保存。
  • 但是当我npm install在修复程序准备期间,内部包的版本之间存在冲突,package.json并且package-lock.jsonpackage-lock.json指向已部署应用程序中使用的版本,但package.json指向latest分发标签,该标签本身指向更高版本。
  • 由于指定的版本package-lock.json不适合指定的版本范围package.json(非常具体 - 只有最新版本才适合),所以npm install忽略package-lock.json并安装最新版本。

我搜索了文档和互联网,但没有找到任何现有的解决方案:

  • 我没有找到任何npm install标志可以处理package-lock.json优先级高于分发标签的版本package.json
  • 我没有找到任何可以package.json从.package-lock.jsonpackage.jsonpackage-lock.json

我的问题是否有任何解决方案(除了编写一个将实现最后一种方法的工具)?

沙箱: https ://github.com/maxlk/npm-lock-version-should-override-latest (克隆并运行npm install或替代)

4

1 回答 1

1

我找到了一个解决方案 - 使用npm ci而不是npm install.

尽管文档中有声明,但它不会因错误而退出:https ://docs.npmjs.com/cli/ci

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

于 2018-08-01T12:46:03.147 回答