yarn中最接近“npm ci”的是什么

在npm中,有一个ci命令用于以干净状态安装项目。在文档中,据说表示:

它可以比常规的跳过npm安装快得多 某些面向用户的特性。它也比普通的更严格 安装,这可以帮助捕获由 大多数NPM用户增量安装的本地环境

在纱线世界中最接近npm ci命令的是什么?也许答案是我们在纱线中不需要这个,因为它的架构是这样的,我们不需要一个特殊的模式。也许答案是使用一系列配置设置。然而,我没有找到一个完整的答案来回答这个问题,我相信拥有它是有价值的。

104010 次浏览

我相信就是这么简单:

yarn install --frozen-lockfile

不幸的是,由于yarn模块解析的工作方式,仅仅执行yarn install --frozen-lockfile有时是不够的。您仍然可以保留无效的传递dep。

要真正获得与npm ci相同的行为,您必须执行:

rm -rf node_modules && yarn install --frozen-lockfile

基于@Crafty_Shadow的建议,我让它更加集成。

package.json

  ...
"scripts": {
...
"preci": "rm -fr node_modules",
"ci": "yarn install --frozen-lockfile"
},
...

对于较新版本的纱线,您应该使用:

yarn install --immutable --immutable-cache --check-cache

官方Yarn文档:😉所述

如果--check-cache选项设置为[…]如果你既遵循零安装模式,又接受来自第三方的pr,这就是建议作为CI工作流程的一部分,否则他们就有能力在提交包之前修改签入包。