从 npm 迁移

从 npm 迁移对大多数用户来说应该相当简单。Yarn 可以使用和 npm 相同的 package.json 格式,并且能够从 npm 库安装任何包。

如果你想在已有的 npm 项目中尝试 Yarn,只要试着运行:

yarn

这将使用 Yarn 的和 node.js 解析算法兼容的解析算法来安排你的node_modules 目录。

如果你遇到错误,请检查现有的问题或向 Yarn 问题跟踪系统报告。

当你运行 yarnyarn add <package> 之一时,Yarn 会在你的包根目录里生成一个 yarn.lock 文件。 你不需要读懂这个文件 - 只要把它提交到代码管理系统里。 当另一个人开始用 Yarn 代替 npm 时,yarn.lock 将保证他们和你一样得到精确相同的依赖。

大多数情况下,第一次运行 yarnyarn add 都会工作。 有些情况下,package.json 文件里的信息不够明确以消除依赖,并且 Yarn 选择的依赖确定方式会遇到依赖冲突。 这很容易发生在大项目里,有时 npm install 不工作,开发者经常删除 node_modules 并从头开始重建。 如果发生这种情况,请在转换到 Yarn 前尝试使用 npm 来让依赖的版本更明显。

项目的其他开发者可以继续使用 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 Yarn
npm install yarn install
(不适用) yarn install --flat
(不适用) yarn install --har
(不适用) yarn install --no-lockfile
(不适用) yarn install --pure-lockfile
npm install [package] (不适用)
npm install --save [package] yarn add [package]
npm install --save-dev [package] yarn add [package] [--dev/-D]
(不适用) yarn add [package] [--peer/-P]
npm install --save-optional [package] yarn add [package] [--optional/-O]
npm install --save-exact [package] yarn add [package] [--exact/-E]
(不适用) yarn add [package] [--tilde/-T]
npm install --global [package] yarn global add [package]
npm update --global                       yarn global upgrade                    
npm rebuild yarn install --force
npm uninstall [package] (不适用)
npm uninstall --save [package] yarn remove [package]
npm uninstall --save-dev [package] yarn remove [package]
npm uninstall --save-optional [package] yarn remove [package]
npm cache clean yarn cache clean [package]
rm -rf node_modules && npm install yarn upgrade