纱线中最接近“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`