重要提示:此文档涉及 Yarn 1(经典版)。
有关 Yarn 2+ 文档和迁移指南,请参阅 yarnpkg.com。

从 npm 迁移

对大多数用户来说,从 npm 迁移应该是一个相当简单的过程。Yarn 可以使用与 npm 相同的 package.json 格式,并且可以从 npm 注册表中安装任何包。

如果你想在现有的 npm 项目中试用 Yarn,只需尝试运行

yarn

这将使用 Yarn 的分辨率算法设置你的 node_modules 文件夹,该算法与 node.js 模块分辨率算法 兼容。

如果你遇到错误,请检查现有的问题或将其报告给 Yarn 问题跟踪器

当你运行 yarnyarn add <package> 时,Yarn 会在包的根目录中生成一个 yarn.lock 文件。你不需要阅读或理解此文件,只需将其检入源代码管理即可。当其他人员开始使用 Yarn 而不是 npm 时,yarn.lock 文件将确保他们获得与你完全相同的依赖项。

大多数情况下,首次运行 yarnyarn add 就可以工作了。在某些情况下,package.json 文件中的信息不足以消除依赖项,并且 Yarn 选择依赖项的确定性方式将遇到依赖项冲突。这在大型项目中尤其容易发生,在某些时候 npm install 不起作用,开发人员经常删除 node_modules 并从头开始重新构建。如果发生这种情况,请尝试使用 npm 使依赖项版本更明确,然后再转换为 Yarn。

从 Yarn 1.7.0 开始,你可以使用 yarn importnpm 生成的 package-lock.json 状态导入 Yarn。

该项目中的其他开发人员可以继续使用 npm,因此你无需让项目中的所有人都同时进行转换。使用 yarn 的开发人员将获得完全相同的配置,而使用 npm 的开发人员可能获得稍微不同的配置,这是 npm 的预期行为。

稍后,如果你决定 Yarn 不适合你,你可以随时返回使用 npm,而无需进行任何特定的更改。如果你项目中没有人再使用 Yarn,你可以删除旧的 yarn.lock 文件,但这是不必要的。

如果你正在使用 npm-shrinkwrap.json 文件,请注意你可能会得到一组不同的依赖项。Yarn 不支持 npm shrinkwrap 文件,因其提供的足够信息不足以支持 Yarn 更加确定性的算法。如果你正在使用 shrinkwrap 文件,不妨让该项目的所有开发人员转而同时使用 Yarn 更加简便。只需移除现有的 npm-shrinkwrap.json 文件,签入新近创建的 yarn.lock 文件即可。

CLI 命令对比

npm (v5) Yarn
npm install yarn add
(N/A) yarn add --flat
(N/A) yarn add --har
npm install --no-package-lock yarn add --no-lockfile
(N/A) yarn add --pure-lockfile
npm install [package] --save yarn add [package]
npm install [package] --save-dev yarn add [package] --dev
(N/A) yarn add [package] --peer
npm install [package] --save-optional yarn add [package] --optional
npm install [package] --save-exact yarn add [package] --exact
(N/A) yarn add [package] --tilde
npm install [package] --global yarn global add [package]
npm update --global                   yarn global upgrade                    
npm rebuild yarn add --force
npm uninstall [package] yarn remove [package]
npm cache clean yarn cache clean [package]
rm -rf node_modules && npm install   yarn upgrade                          
npm version major                     yarn version --major                  
npm version minor                     yarn version --minor                  
npm version patch                     yarn version --patch                  
npm explain [package]                 yarn why [package]                  
npm audit [package]                 yarn audit [package]