全部速查表前端开发

yarn

Yarn 1.x (classic) / Yarn 4 (berry)

日常高频 Yarn CLI 命令快速参考(同时覆盖 Yarn Classic 1.x 与 Yarn Berry 2/3/4):install / add / remove / run / workspaces、lockfile、Plug'n'Play 以及 Berry 配置,附带常用参数和实操示例。

33 条命令

安装(Classic 1.x)

yarn install

安装 `package.json` 中列出的全部依赖,创建或刷新 `node_modules` 与 `yarn.lock`。

--frozen-lockfile 当 lock 会变更时失败(CI);--production / --prod 跳过 devDeps;--no-progress;--silent

yarn install --frozen-lockfile
yarn install --frozen-lockfile

只有当 `yarn.lock` 与 `package.json` 完全一致时才安装。CI 中用于确保可复现构建。

yarn install --frozen-lockfile

安装(Berry)

yarn install

Berry 默认行为:当 `.yarnrc.yml` 中是 `nodeLinker: pnp` 时使用 Plug'n'Play,否则回退到 `node_modules`。缓存位于 `.yarn/cache`。

--immutable lockfile 变动即失败(Berry 等价于 --frozen-lockfile);--inline-builds;--mode=update-lockfile

yarn install --immutable
yarn set version <version>

切换项目中的 Yarn 二进制。常用:`yarn set version stable`、`yarn set version 4.0.2`、`yarn set version classic`。

yarn set version stable

添加依赖

yarn add <pkg>

添加一个运行时依赖并写入 `package.json` + lockfile。Classic 写到 `dependencies`,Berry 同样。

<pkg>@<version|range>;--dev / -D;--exact / -E;--optional / -O;--peer

yarn add lodash && yarn add -D typescript@^5 vitest
yarn add -D <pkg>

添加到 `devDependencies`。

yarn add -D typescript @types/node eslint
yarn add <pkg>@<version>

安装指定版本、dist-tag(`@latest`、`@next`、`@canary`)或 git URL。

yarn add [email protected] && yarn add next@latest
yarn global add <pkg>

全局安装一个工具(Classic 1.x)。Berry 对一次性二进制用 `yarn dlx`,全局工具推荐 `corepack`。

yarn global add typescript

移除

yarn remove <pkg>

从 `node_modules` 与相应的 `dependencies` / `devDependencies` 中移除一个包。

yarn remove lodash && yarn remove -D @types/node

更新

yarn upgrade

在当前 semver 范围内升级所有依赖;`yarn upgrade --latest` 跳到最新可用版本,并重写范围。

--latest;--pattern <glob>;--caret;--exact;-i / --interactive

yarn upgrade && yarn upgrade eslint --latest
yarn upgrade <pkg>@<version>

将单个包升级到指定版本。

yarn upgrade [email protected]

运行脚本

yarn run <script>

运行 `package.json` 中的脚本。`yarn test`、`yarn start`、`yarn build` 都是简写。

-- <args> 将参数透传给脚本

yarn run build -- --mode production
yarn <script>

等同于 `yarn run <script>`——直接以脚本名调用,无需 `run` 关键字。

yarn test && yarn lint:fix
yarn dlx <pkg> [args]

按需运行某个包的二进制而无需本地安装(Berry 等价于 `npx`)。缓存到 `~/.yarn/berry/cache`。

-p / --package 选择包;-q / --quiet

yarn dlx create-vite my-app --template vue

Workspaces

yarn workspaces add <pkg>

向 monorepo 工作区(1.x)的根目录添加依赖。

yarn workspaces add typescript -D
yarn workspace <ws> add <pkg>

向 monorepo 中某个具名 workspace 添加依赖。

yarn workspace @myorg/web add react && yarn workspace @myorg/api add -D vitest
yarn workspaces run <script>

在每个 workspace 中运行某个脚本。`yarn workspaces foreach run <script>`(Berry)支持并发与拓扑顺序。

--parallel;--topological;--continue;--interlaced

yarn workspaces foreach run build --topological --parallel

检查

yarn list

打印依赖树。`--pattern <regex>` 可过滤;`--depth 0` 仅显示直接依赖。

--depth=N;--pattern;--json

yarn list --depth=0 && yarn list --pattern "^react$"
yarn why <pkg>

解释为什么某个包会被安装——展示引入它的依赖链。

yarn why react && yarn why @types/node
yarn info <pkg>

打印包的 registry 元数据——版本、依赖、dist-tags、readme 节选。大致等价于 `npm view`。

<pkg>@<version>;<pkg> readme;<pkg> dependencies

yarn info react dist-tags && yarn info lodash versions
yarn licenses list

列出依赖树中每个许可证(SPDX 标识 + 作者)。在做许可证合规审查时很有用。

yarn licenses list

Berry 配置

yarn config set <key> <value>

向 `.yarnrc.yml`(Berry)写入配置项。常见键:`nodeLinker`、`npmRegistryServer`、`enableTelemetry`、`yarnPath`。

yarn config set nodeLinker node-modules && yarn config set enableTelemetry false
yarn config get <key>

读取单个配置项。

yarn config get nodeLinker

缓存

yarn cache clean

清空 Yarn 缓存(Classic:`~/.yarn-cache`;Berry:`.yarn/cache`)。

yarn cache clean
yarn cache dir

打印缓存目录路径。

yarn cache dir

Lockfile

yarn import

仅 Berry 可用——将 npm 的 `package-lock.json` 导入到 Yarn 的 lockfile 格式。

yarn import
yarn constraints

仅 Berry 可用——执行用 Prolog 编写的 `constraints.pro` 中的项目级依赖规则(例如每个 workspace 必须使用同一 React 版本)。

yarn constraints

审计

yarn npm audit

Berry——代理 npm registry 的安全通告数据源。报告 lockfile 中的漏洞。

--severity info|low|moderate|high|critical;--json

yarn npm audit --severity high

杂项

yarn version

打印当前 Yarn 版本(Classic 和 Berry 都适用)。

yarn version
yarn init

交互式创建 `package.json`,或加 `-y` 接受默认值。

-y 接受默认值;-p / --private 标记为私有

yarn init -y
yarn pack

把当前包打包为 tarball 但不发布——适合离线分发。

--filename;--pack-destination <dir>

yarn pack --filename my-pkg.tgz

Plug'n'Play(Berry)

yarn unplug <pkg>

将单个包从 PnP 压缩仓库提取到普通的 `node_modules/<pkg>`,以便用传统方式 require(用于不兼容工具的兼容处理)。

yarn unplug react && yarn install
yarn rebuild

为当前 Node ABI 重新编译原生插件。在 PnP 下,含有原生依赖的包在 Berry 中需要这一步。

yarn rebuild

相关命令速查

关于 Yarn

Yarn 由 Facebook(Meta)于 2016 年 10 月发布,作为比 npm 更快、更具确定性的替代方案,并获得了 Google、Exponent、Tilde 等的贡献。最初的 1.x 现称为 "Yarn Classic",处于维护模式;活跃的版本线是 "Yarn Berry"(2020 年的 2.0、2021 年的 3.0、2022 年的 4.0,今天是 5.x)。Yarn Berry 提供 `yarn`(内嵌 Node 的单一 4 MB 二进制)、`yarn dlx`(npx 替代品)、`yarn workspaces`,以及 Plug'n'Play(`yarn install --immutable` 配合 `.pnp.cjs`)——一种有争议但默认的安装方式:完全不安装 `node_modules`,而是从单一压缩包中解析依赖。Berry 通过 `yarnrc.yml`(YAML 格式)配置,区别于 Classic 的 `yarnrc` ini。两条线可以在同一台机器共存:`yarn set version classic` 与 `yarn set version berry` 可切换二进制。Yarn 在安装时(并行 + 缓存)比 npm 更快,支持 monorepo 的 `workspaces` 与 `constraints`,并内置 `yarn why` / `yarn licenses` 自省工具。不会向 Meta 上传任何数据——Yarn 是基于 BSD-2-Clause 协议的独立开源项目。

速查页版本 1.0.0