从 npm 迁移
从 npm 迁移对大多数用户来说应该相当简单。Yarn 可以使用和 npm 相同的 package.json
格式,并且能够从 npm 库安装任何包。
如果你想在已有的 npm 项目中尝试 Yarn,只要试着运行:
yarn
这将使用 Yarn 的和 node.js 解析算法兼容的解析算法来安排你的node_modules
目录。
如果你遇到错误,请检查现有的问题或向 Yarn 问题跟踪系统报告。
当你运行 yarn
或 yarn add <package>
之一时,Yarn 会在你的包根目录里生成一个 yarn.lock
文件。 你不需要读懂这个文件 - 只要把它提交到代码管理系统里。 当另一个人开始用 Yarn 代替 npm
时,yarn.lock
将保证他们和你一样得到精确相同的依赖。
大多数情况下,第一次运行 yarn
或 yarn 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 |