npm 和 yarn 的區(qū)別

引言

雖然網(wǎng)上和知乎上有好多文章寫 npm 和 yarn 的區(qū)別魁瞪。并且我寫的文章中借鑒他人的,但還是希望發(fā)出來壳炎,自己想看的時候,就立馬可以找到。引用的文章也會在底部寫出來了茸时。

yarn 介紹

yarn 是由 Facebook妹蔽、Google沥匈、Exponent 和 Tilde 聯(lián)合推出了一個新的 JS 包管理工具第焰,yarn 是為了彌補 npm 的一些缺陷而出現(xiàn)的买优。

npm 的缺陷:

  • npm install 下載速度慢,重新 install 時速度依舊慢

  • 同一個項目挺举,安裝的無法保持一致性。原因是因為 package.json 文件中版本號的特點導致的烘跺,下面三個版本號在安裝的時候代表不同的含義湘纵。

"5.0.3"     # 表示安裝指定的5.0.3版本
"~5.0.3"    # 表示安裝5.0.X中最新的版本
"^5.0.3"    # 表示安裝5.X.X中最新的版本
  • 使用 npm 安裝多個 js 包時,包會在同一時間下載和安裝滤淳。安裝過程中梧喷,其中一個包拋出了一個異常,但 npm 會繼續(xù)安裝其他包,所以錯誤信息就會在一大堆提示信息中丟失掉铺敌,以至于直到執(zhí)行前汇歹,都不會發(fā)現(xiàn)實際發(fā)生的錯誤。

yarn 優(yōu)點

1. 速度快:(主要來自一下兩個方面)

  • 并行安裝

    無論 npm 還是 yarn 在安裝包的時候偿凭,都會執(zhí)行一系列任務产弹。 npm 是按照隊列執(zhí)行每個 package,所以 npm 是串行的弯囊。

    而 yarn 是并行的痰哨,它同步執(zhí)行所有任務,性能得到了極大的提升匾嘱。

  • 離線模式

    如果使用 yarn 已經(jīng)安裝過一個軟件包斤斧,再次安裝時 yarn 會在之前的緩存中獲取,而不會像 npm 再次從網(wǎng)絡中下載霎烙。

2. 安裝版本統(tǒng)一

  1. 為了保持安裝版本的統(tǒng)一性撬讽,yarn 有一個鎖定文件(lock file)。它記錄了被確切安裝上的模塊的版本號悬垃。每次只要新增一個模塊游昼,Yarn 就會更新 yarn.lock 這個文件。這么做保證了每一次拉取同一個項目依賴時盗忱,使用的都是一樣的模塊版本酱床。
  2. npm 也有辦法實現(xiàn)使用相同版本的 packages,但需要開發(fā)者執(zhí)行 npm shrinkwrap 命令趟佃。這個命令將會生成一個鎖定文件扇谣,在執(zhí)行 npm install 的時候,該鎖定文件會先被讀取闲昭,和 Yarn 讀取 yarn.lock 文件一個道理罐寨。
  3. npm 和 Yarn 兩者的不同之處在于:Yarn 默認會生成這樣的鎖定文件,而 npm 要通過 shrinkwrap 命令生成 npm-shrinkwrap.json 文件序矩,只有當這個文件存在的時候鸯绿,packages 版本信息才會被記錄和更新。
    3. 輸出簡潔
  • npm 的輸出信息比較冗長簸淀。在執(zhí)行 npm install <package> 的時候瓶蝴,命令行里會不斷地打印出所有被安裝上的依賴。
  • Yarn 簡潔太多:默認情況下租幕,結(jié)合了 emoji 直觀且直接地打印出必要的信息舷手,也提供了一些命令供開發(fā)者查詢額外的安裝信息。

4. 多注冊來源處理

  • 所有的依賴包劲绪,不管他被不同的庫間接關(guān)聯(lián)引用多少次男窟,安裝這個包時盆赤,只會從一個注冊來源去裝,要么是 npm 要么是 bower, 防止出現(xiàn)混亂不一致歉眷。

5. 語義化進行了修改

  • yarn 改變了一些 npm 命令的名稱牺六,比如 yarn add/remove 安裝卸載模塊,而 npm 是 install/uninstall 安裝卸載模塊汗捡。

常用命令:

  • yarn / yarn install 等同于npm install 批量安裝依賴
  • yarn add xxx 等同于 npm install xxx —save 安裝指定包到指定位置
  • yarn remove xxx 等同于 npm uninstall xxx —save 卸載指定包
  • yarn add xxx —dev 等同于 npm install xxx —save-dev
  • yarn upgrade 等同于 npm update 升級全部包
  • yarn global add xxx 等同于 npm install xxx -g 全局安裝指定包

yarn 和 npm 命令對比

1.查看版本

yarn --version
npm -version(或者 node -v)

2.安裝淘寶鏡像

yarn config set registry 'https://registry.npm.taobao.org'     
npm install -g cnpm --registry=http://registry.npm.taobao.org

3.初始化某個項目

yarn init                                                  
npm init

4.默認安裝項目依賴

yarn install                                            
cnpm install

5.安裝依賴淑际,并且默認保存到 package

yarn add xxx                                        
cnpm install xxx --save

6.卸載依賴

yarn remove xxx                                    
cnpm uninstall xxx --save

7.更新依賴

yarn upgrade xxx                                  
cnpm update xxx --save

8.安裝全局項目依賴

yarn global add xxx                                
cnpm install xxx -g

9.安裝特定版本號的項目依賴

yarn add xxx@                                       
cnpm install xxx@1.2.33 --save

10.發(fā)布/登錄/登出,一系列NPM Registry操作

yarn publish/login/logout                         
npm publish/login/logout

11.運行命令

yarn run/test                                           
npm run/test
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凉唐,一起剝皮案震驚了整個濱河市庸追,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌台囱,老刑警劉巖淡溯,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異簿训,居然都是意外死亡咱娶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門强品,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膘侮,“玉大人,你說我怎么就攤上這事的榛∏砹耍” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵夫晌,是天一觀的道長雕薪。 經(jīng)常有香客問我,道長晓淀,這世上最難降的妖魔是什么所袁? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮凶掰,結(jié)果婚禮上燥爷,老公的妹妹穿的比我還像新娘。我一直安慰自己懦窘,他們只是感情好前翎,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著畅涂,像睡著了一般鱼填。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上毅戈,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天苹丸,我揣著相機與錄音,去河邊找鬼苇经。 笑死赘理,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的扇单。 我是一名探鬼主播商模,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蜘澜!你這毒婦竟也來了施流?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鄙信,失蹤者是張志新(化名)和其女友劉穎瞪醋,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體装诡,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡银受,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鸦采。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宾巍。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖渔伯,靈堂內(nèi)的尸體忽然破棺而出顶霞,到底是詐尸還是另有隱情,我是刑警寧澤锣吼,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布选浑,位于F島的核電站,受9級特大地震影響吐限,放射性物質(zhì)發(fā)生泄漏鲜侥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一诸典、第九天 我趴在偏房一處隱蔽的房頂上張望描函。 院中可真熱鬧,春花似錦狐粱、人聲如沸舀寓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽互墓。三九已至,卻和暖如春蒋搜,著一層夾襖步出監(jiān)牢的瞬間篡撵,已是汗流浹背判莉。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留育谬,地道東北人券盅。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像膛檀,于是被迫代替她去往敵國和親锰镀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容