不论做什么,包管理工具总是必须。因为要满足不同的需求,所以每一个方向都会出现多个不同的管理工具。比如做iOS的Cocoapods,SwiftPackage,Carthage, 安卓的Maven,Gradle。都会陷入包管理工具大战,最近在学Vue,又开始出现选择题,到底JS包管理工具是用npm还是用yarn呢?
作为一个对JS不资深的人,为什么选择yarn,抛弃npm。很明显。yarn是在npm的基础上进行改进的,弥补了速度,缓存,安全等方面的不足之处。
Yarn比NPM的优势
- 加入了缓存机制,离线安装,速度更快
- 加入算法校验包完整性,更安全
- 使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作,更可靠。
Yarn比NPM 指令对比
npm (v5) | Yarn |
---|---|
npm install | yarn install |
(N/A) | yarn install --flat |
(N/A) | yarn install --har |
npm install --no-package-lock | yarn install --no-lockfile |
(N/A) | yarn install --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 |
从上面的指令可以看出,Yarn 基本覆盖npm,又新增一些功能。
总结
既然Yarn是npm的扩展集,又能解决npm每次安装依赖网络的龟速行为,为什么不拥抱Yarn呢?
从以往iOS和安卓开发经验,依赖第三方库缓存机制的重要性,所以还在用npm的小伙伴们,珍惜时间拥抱Yarn吧。