Yarn over npm.
yarn 是 facebook 主导的 Node.js 包管理工具,它能够:
安装更快(并行安装,相较于与 npm 的串行更快)
离线安装(对已经安装过的包,支持离线安装)
使用 yarn.lock 文件保证锁定所有依赖的版本(npm v5.x 开始支持)
更安全(防止在安装时执行代码)
yarn 能够自动读取 package.json 文件,格式几乎都可以互相兼容。生成独有的 yarn.lock 文件,确保其他人使用 yarn 能够获取一样的依赖。
大型项目中,package.json 中信息不够明确,依赖关系出现冲突,这时候应该先删除 node_modules 重新安装,使得依赖项的版本更明确。这时再转换到 yarn 上。
| 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 5.x 之后,磨平了和 yarn 之间的很多差距,比如安装速度、离线安装和依赖版本的锁定等问题,不过 yarn 某些情况下还是会快些。使用哪一个,也仅仅是用户的偏好的问题。