纱线中最接近“npm ci”的是啥

Posted

技术标签:

【中文标题】纱线中最接近“npm ci”的是啥【英文标题】:What is the closest to `npm ci` in yarn纱线中最接近“npm ci”的是什么 【发布时间】:2020-02-17 07:52:28 【问题描述】:

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

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

yarn 世界中与npm ci 命令最接近的等价物是什么?也许答案是我们在 yarn 中不需要这个,因为它的架构是这样的,我们不需要特殊的模式。也许答案是使用一堆配置设置。但是,我无法找到这个问题的完整答案,我相信拥有它会很有价值。

【问题讨论】:

【参考方案1】:

我相信就这么简单:

yarn install --frozen-lockfile

【讨论】:

根据文档正确yarnpkg.com/en/docs/cli/install 纱线 2 怎么样? 如果你使用 Yarn 2,你应该使用 --immutable,因为它已经取代了--frozen-lockfile @BuZZ-dEE 检查我的最新答案***.com/a/69944063/2834553?【参考方案2】:

不幸的是,由于 yarn 模块解析的工作方式,仅仅做yarn install --frozen-lockfile 有时是不够的。您仍然会留下无效的传递依赖。

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

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

【讨论】:

确实!我想知道为什么这个答案不是投票最多的一个:(有时在优化之前我们会意外地为 Dockerfile 制作项目文件的完整副本(遗憾的是一些'指南'从...复制粘贴)这会导致一些头痛时间...解释 npm CI 的文档使其更加明显:docs.npmjs.com/cli/v7/commands/npm-ci @KostasKapetanakis 也许是因为人们正在使用不知道之前运行的临时构建代理?【参考方案3】:

在@Crafty_Shadow 的建议的基础上,我将它变得更加集成。

package.json

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

【讨论】:

这对我不起作用,在我的情况下,npm 似乎看不到 package.json "ci" 定义,但不知道为什么..(注意,我没有 package- lock.json,我只是想以通用方式将npm ci 用于纱线项目)。 仅使用 yarn 时,您将没有 package-lock.json 文件。这是在使用 npm 安装时创建的。你可能需要做npm run ci @warden 那是因为npm ci 是本机命令ci。正如上一条评论中所指出的,您必须使用npm run ci【参考方案4】:

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

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

如the official Yarn docs 所述:?

如果设置了 --check-cache 选项 [...] 如果您同时遵循零安装模型并接受来自第三方的 PR,则建议将其作为 CI 工作流程的一部分 ,否则他们可以在提交之前更改签入的包。

【讨论】:

以上是关于纱线中最接近“npm ci”的是啥的主要内容,如果未能解决你的问题,请参考以下文章

python 中最接近 WordPress 而不是 php 的东西是啥? [关闭]

私有 npm 包无法使用 `npm ci` 安装,但可以使用 `npm i` 为啥?

`npm 错误!运行 `npm ci && npm run build` 时出现 SyntaxError 后的代码 1`

NPM CI 和 Bluebird 承诺警告

GitHub 操作在 npm ci 上失败

Matlab中最接近#define的东西是啥?