从 npm 迁移
对大多数用户来说,从 npm 迁移应该是一个相当简单的过程。Yarn 可以使用与 npm 相同的 package.json 格式,并且可以从 npm 注册表中安装任何包。
如果你想在现有的 npm 项目中试用 Yarn,只需尝试运行
yarn
这将使用 Yarn 的分辨率算法设置你的 node_modules 文件夹,该算法与 node.js 模块分辨率算法 兼容。
如果你遇到错误,请检查现有的问题或将其报告给 Yarn 问题跟踪器。
当你运行 yarn 或 yarn add <package> 时,Yarn 会在包的根目录中生成一个 yarn.lock 文件。你不需要阅读或理解此文件,只需将其检入源代码管理即可。当其他人员开始使用 Yarn 而不是 npm 时,yarn.lock 文件将确保他们获得与你完全相同的依赖项。
大多数情况下,首次运行 yarn 或 yarn add 就可以工作了。在某些情况下,package.json 文件中的信息不足以消除依赖项,并且 Yarn 选择依赖项的确定性方式将遇到依赖项冲突。这在大型项目中尤其容易发生,在某些时候 npm install 不起作用,开发人员经常删除 node_modules 并从头开始重新构建。如果发生这种情况,请尝试使用 npm 使依赖项版本更明确,然后再转换为 Yarn。
从 Yarn 1.7.0 开始,你可以使用 yarn import 将 npm 生成的 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] |