我想在内部包的package.json
中使用latest
分发标记。这使我能够在本地环境中npm install
时始终获得他们的最新版本,而无需更新所有外部第三方。
当我热修复部署的verion:时,问题就来了
- 为了修补程序,我为应用程序的每个部署版本生成并保存
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
如果包锁中的依赖项与
package.json
中的依赖性不匹配,npm ci
将退出并返回错误,而不是更新包锁。