从 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] |