包管理工具 yarn
入门
npm 转 yarn
对多数用户来说,从 npm 迁移的过程应该非常简单。Yarn 和 npm 使用相同的package.json
格式,而且 Yarn 可以从 npm 安装依赖包。
如果你打算在现有项目中尝试 Yarn,只需执行:
yarn
Yarn 将通过自己的解析算法来重新组织node_modules
目录,这个算法和 node.js 模块解析算法是兼容的。
如果出错,请查阅 issue 列表,或者向 Yarn issue tracker 报告。
执行yarn
命令或者yarn add <package>
命令后,Yarn 都会在项目根目录下生成yarn.lock
文件。 你无需理解此文件的具体内容,但请记得将其提交到代码管理系统。 当其他开发者也从npm
迁移到yarn
时,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 (v5) | Yarn |
---|---|
npm install | yarn install |
(不适用) | yarn install —flat |
(不适用) | yarn install —har |
npm install —no-package-lock | yarn install —no-lockfile |
(不适用) | yarn install —pure-lockfile |
npm install [package] | yarn add [package] |
npm install [package] —save-dev | yarn add [package] —dev |
(不适用) | yarn add [package] —peer |
npm install [package] —save-optional | yarn add [package] —optional |
npm install [package] —save-exact | yarn add [package] —exact |
(不适用) | yarn add [package] —tilde |
npm install [package] —global | yarn global add [package] |
npm update —global | yarn global upgrade |
npm rebuild | yarn install —force |
npm uninstall [package] | yarn remove [package] |
npm cache clean | yarn cache clean [package] |
rm -rf node_modules && npm install | yarn upgrade |
原文: https://yarnpkg.com/zh-Hans/docs/migrating-from-npm
yarn转npm
将 Yarn 项目转为 NPM 的命令行工具
使用起来很简单,先确保你的电脑里安装了 Node.js ,然后使用 NPM 全局安装:
npm install yarn2npm -g
然后在你的项目里运行:
y2n
如果你要删除 yarn.lock,可以加个 -d 参数:
y2n -d
工作原理是检测当前工作目录下是否有 package.json
和 yarn.lock
,如果有就删除 node_modules
(如果你加了 -d 参数还会删除 yarn.lock )然后运行 npm install
。