我想将latest
中的package.json
分发标签用于内部软件包。这样一来,当我在本地环境中npm install
时,始终可以获得最新版本,而无需更新所有外部第三方。
当我修复已部署的版本时出现问题:
package-lock.json
。npm install
进行修补程序准备时,package.json
和package-lock.json
中的内部软件包版本之间存在冲突:package-lock.json
指向已部署的版本应用程序,但package.json
指向latest
分发标签,分发标签本身指向更高版本。package-lock.json
中指定的版本不适合package.json
中指定的版本范围(非常具体-仅适用于最新版本),因此npm install
忽略{{1} }并安装最新版本。我搜索了文档和互联网,但没有找到解决该问题的任何现有解决方案:
package-lock.json
标志会比npm install
中的发行标签优先处理package-lock.json
版本的package.json
重建package.json
,或至少用package-lock.json
的特定版本替换package.json
中的别名(分布标签)。 我的问题是否有解决方案(除了编写将实现最后一种方法的工具外)?
沙盒:
https://github.com/maxlk/npm-lock-version-should-override-latest(克隆并运行package-lock.json
或其他替代方法)
答案 0 :(得分:1)
我找到了一种解决方案-使用npm ci
代替npm install
。
尽管有文档https://docs.npmjs.com/cli/ci
中的声明,它也不会错误退出。如果软件包锁中的依赖项与
package.json
中的依赖项不匹配,则npm ci
将退出并显示错误,而不是更新软件包锁。