首先镀钓,這兩個(gè)都屬于js包管理工具进栽,都可以安裝包或者模塊
yarn 是由facebook雷滋、google等聯(lián)合開(kāi)發(fā)推出的
區(qū)別:
-
yarn速度快,主要來(lái)自以下兩個(gè)方面:
- npm 下載包的話 比如npm install
它是按照包的排序臼勉,也就是隊(duì)列挨個(gè)下載邻吭,一個(gè)下載完成后,再下載另一個(gè)
yarn是將要下載的包進(jìn)行同時(shí)下載 - 離線模式:如果之前已經(jīng)安裝過(guò)一個(gè)軟件包宴霸,用Yarn再次安裝時(shí)之間從緩存中獲取囱晴,就不用像npm那樣再?gòu)木W(wǎng)絡(luò)下載了。
- npm 下載包的話 比如npm install
- yarn 在下載模塊或包時(shí)瓢谢,命令行輸出的信息更加簡(jiǎn)潔
- npm版本5.0 之后畸写,會(huì)自帶package.lock.json 文件,該文件主要描述了你項(xiàng)目中安裝的包都是哪一個(gè)版本氓扛,你再進(jìn)行npm install 的話艺糜,會(huì)安裝指定版本的包。
yarn 一直都有l(wèi)ock 文件幢尚,功能和npm 的package.lock.json差不多。 - 命令不同
常用命令:
初始化新項(xiàng)目
- npm init
- yarn init
默認(rèn)安裝
- npm install
- yarn install
安裝某個(gè)依賴翅楼,并且默認(rèn)保存到package.json
- npm install express —save
- yarn add express
移除某個(gè)依賴項(xiàng)目 (例如express)
- npm uninstall express —save
- yarn remove express
安裝某個(gè)開(kāi)發(fā)時(shí)依賴項(xiàng)目 (例如express)
- npm install express —save-dev
- yarn add express —dev
更新某個(gè)依賴項(xiàng)目 (例如express)
- npm update express —save
- yarn upgrade express
安裝某個(gè)全局依賴項(xiàng)目 (例如webpack)
- npm install webpack -g
- yarn global add webpack
運(yùn)行某個(gè)命令
- npm run 命令名稱
- yarn run 命令名稱
window安裝
npm install yarn -g
npm install npm -g
總結(jié)
在npm5.0之前尉剩,yarn的優(yōu)勢(shì)特別明顯。但是在npm之后毅臊,通過(guò)以上一系列對(duì)比理茎,我們可以看到 npm5 在速度和使用上確實(shí)有了很大提升,值得嘗試管嬉,不過(guò)還沒(méi)有超過(guò)yarn皂林。
綜上我個(gè)人的建議是如果你已經(jīng)在個(gè)人項(xiàng)目上使用 yarn,并且沒(méi)有遇到更多問(wèn)題蚯撩,目前完全可以繼續(xù)使用础倍。但如果有兼容 npm 的場(chǎng)景,或者身處在使用 npm胎挎,cnpm沟启,tnpm 的團(tuán)隊(duì)忆家,以及還沒(méi)有切到 yarn 的項(xiàng)目,那現(xiàn)在就可以試一試 npm5 了德迹。