當前位置:
首頁 > 知識 > 如何評價Facebook推出的node模塊管理器yarnpkg?

如何評價Facebook推出的node模塊管理器yarnpkg?

剛才粗看了下文檔。


其實npm client的最大問題地球人都知道,就是慢。以這點來說,yarn其實並不是最快的……


以下是拿我們某個大項目的測試:

cnpm在無緩存下全新安裝:


real


0m53.079s


user

0m41.432s


sys


0m19.383s


無更新重新安裝:


0m11.099s

0m2.907s


0m1.385s


再次全新安裝:


0m44.707s


0m35.417s

0m16.281s


-----------------------------------------------------------------------------------


yarn在無緩存下全新安裝(公平起見,我把registry換成了淘寶的鏡像):


1m49.653s

1m30.335s


0m48.305s


0m0.915s


0m0.672s


0m0.141s


1m4.497s


0m52.680s


0m33.219s


刪除lock文件後重新安裝(像切換branch可能發生lock改變):


0m34.586s


0m28.289s


0m6.394s


以上測試中cnpm比yarn快很多。只有在有lock文件時,yarn直接就結束了。而cnpm沒有lock(也不支持shrinkwrap),因此無法享受這樣的秒完,不過即使在這樣不利的情況下(意味著cnpm要重新解析一遍所有依賴),在我們這個有超過1000個依賴,總量達392M的node_modules下,也只花了10秒。


就速度這點來說,cnpm完勝,然而阿里的同學們的宣傳完敗給facebook……


下面講一下yarn和npm和cnpm不同的地方:


1. yarn使用了和npm3一樣的模塊布局,不像cnpm是用link的方式。cnpm的方式能在安裝依賴時獲得更快的速度(因為只需要做link),代價是比較難實現shrinkwrap(但是並不是不能實現類似yarn的lock)。


2. yarn實現了lock。lock看上去比npm的shrinkwrap要更簡單一點,但是作用是類似的。cnpm沒有類似的功能。yarn的一個重要改變是,它默認會生成lock,而npm是默認不生成。這是一個巨大的策略改變。像facebook這樣的公司默認使用lock並手動管理依賴版本升級是非常正常的,但是對於一般開源項目是否默認使用lock是好的策略?這改變了npm生態的默認習慣,後果暫時無法評估。


3. yarn改變了一些npm命令的名稱,比如 yarn add/remove,感覺上比 npm 原本的 install/uninstall 要更清晰。不過這只是很小的改進,且yarn也沒有提供如 npm i 這樣的縮寫,所以我個人覺得其實也沒多好。


yarn還提供了version命令,互動式的依賴版本升級工具。還沒有很多經驗,難以確定這個工具到底是不是比ncu好。


yarn還使用了deterministic的演算法確保無論安裝順序如何,結果一致。而npm3下包的最終布局與安裝順序有關。facebook的人說這可能造成「works on my machine」的bug,不過我個人從來沒有遇到過也沒有聽說過這樣的bug。且npm3的不一致只出現在中途加減包的情況,一次乾淨的安裝其實總是得到一樣的結果的。所以至少就我所知,我也沒覺得這是一個問題。


結論:從目前看到的情況,在已經有 cnpm 的情況下,我認為 yarn 提供的額外價值並不特別高。當然,國外社區的大部分人並不知道 cnpm 的存在,對於這些同志 yarn 就是救星了(然而實際上還有pnpm/ied等其他第三方npm client)。講真,阿里同志的宣傳要加強啊!最好能聯合國內其他公司一起宣傳宣傳。否則 facebook 吹個牛就馬上蹭蹭蹭長星,真是沒意義。當然,我覺得lock功能還是有用的,建議@死馬、@蘇千趕緊加上。當然,指望 cnpm 能跟 yarn 一樣流行,不太現實。畢竟大部分人(特別是react黨)是 facebook 的腦殘粉。我建議你們最好馬上 fork 一個 cyarn (內部就用 cnpm,但是命令兼容 yarn 就好),這是釜底抽薪的辦法。


BTW,我個人其實希望facebook的人把精力花在babel上才是正道。


以上。


請您繼續閱讀更多來自 知乎 的精彩文章:

2歲半的小孩經常無理取鬧,稍微有不合意就狂哭狂叫,怎麼樣教育他改變這種行為?
香水櫃檯試聞的鐵塊是用什麼原理留香的?
腦科學進展為何如此緩慢?
深空探測如何解決空間輻射問題?
如何評價曹則賢的科普文《天大的誤解:物理學是一門實驗的科學》?

TAG:知乎 |

您可能感興趣

與Snapchat爭奪市場 Facebook或推出「Facebook Talk」
adidas Skateboarding推出Busenitz Pro Horween,進口材質加持!
adidas Originals 推出 Tubular Doom Sock 全黑配色!
Converse Chuck Taylor All Star x Nike Flyknit 推出「True Indigo」配色
Rick Owens 將與 Hood Rubber Company 推出合作系列
連Converse Jack Purcell也要推出 Millennial Pink 的懶人鞋!
NikeLab Zoom Flyknit Streak 推出全新 「Black Reflective」 配色
Maison Margiela 推出全新鞋款 Patchwork Sneakers
Marktech Optoelectronics 和 Digi-Key 合作推出 定製型光電探測器
adidas Originals 為 Matchcourt 推出全新 Primeknit 版本
Microsoft推出Surface CloudBook設備
adidas x Parley for the Oceans 推出全新 adiZero Prime 合作鞋款!
Splunk推出Splunk Insights for AWS Cloud Monitoring
#hypebeastkids: Just Don 宣布 Air Jordan 2「Arctic Orange」將僅以童碼推出
Maison Margiela 推出一款可以塗鴉的 Replica Sneaker
visvim 推出 Luxsic 面料 Sanjuro Jacket
Facebook 將推出全新「Fundraisers」功能
NikeLab 與 Loopwheeler 推出聯名 Sock Dart及 Air Force 1 Ultraforce 鞋款!
adidas 推出 Primeknit 版 adilette 拖鞋