Node.js包管理器Yarn的入门介绍与安装
FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT.
就在前不久,?Facebook?發布了新的?node.js?包管理器?Yarn?用以替代?npm?。咱雖然是個半桶水的咸魚前端,不過也得跟上?Javascript?這股潮?(hong)?流?(huang)?的腳步,所以便有了下面這篇文章。大概的淺嘗了一下這個自稱是又快又可信賴又安全的包管理,所以寫的內容不會很詳細,更多的可能只是針對這個全新的包管理與?npm?的不同之處來對比。也可能有些地方寫得不對,如果有的話,歡(lai)迎(da)指(wo)正(a)。
Installation
首先當然是安裝啦。跟?npm?這種被欽點而隨?nodejs?一起被安裝的包管理器不同,Yarn?需要自行手動安裝。這也可以理解吧,畢竟是全新的東西。不過老實說,安裝體驗是不太好的……吧。
為什么怎么說呢……因為我的開發環境是?Arch Linux?,而官方文檔只提供了?apt-get?系?Linux?和?yum?系?Linux?的安裝方式……
既然志在取代?npm?,那么肯定有全平臺的兼容方案咯,果然有適用于所有發行版的手動安裝腳本,于是我就嘗試這個,可是裝了三次沒有一次成功,各種問題……
最后發現,其實?yarn?可以直接像裝模塊那樣用?npm?裝:
<span style="color:#a31515">npm install -g yarn</span>啊嘞?一個要取代?npm?的東西,居然還要用?npm?來裝??excuse me??好吧,不管怎么講總之是這樣裝上了,所以我說安裝體驗一般般……也許可能對其他的發行版來說會好一些吧,可能對于一些大眾的發行版和?macOS?來說,安裝就是一條命令打進終端的事情。
雖然截止到我寫這篇文章的時候,已經有了?Arch Linux?上的安裝方式,不過是通過yaourt(AUR)?的方式,不過我并不覺得對于新手來說手動裝一下?yaourt?再裝?yarn?比直接裝?nodejs?然后?npm install?簡單。也許在現階段,相比什么?Debian/Ubuntu/CentOS?來說?Arch?還是個小眾的發行版吧……
Dependencies Management
安裝部分就這樣告一段落。既然作為一個包管理,就要做好自己的職責。接下來就想要試試這個新包管理是否真的有它所宣傳的那樣神奇。接下來我在同樣的環境下,將?yarn?和?npm?以及?cnpm?做對比。由于墻內的特殊環境,已將?npm?的?registry?更換為?https://registry.npm.taobao.org?。
FASTER
在對比之前,我覺得這個對比對?yarn?來說有些不公平,因為?npm?已經設置了國內的鏡像,而截止此文章發布的時候?yarn?并沒有國內鏡像,所以并沒有對?yarn?進行特殊的設置。我有些擔心這樣會不會對測試的結果造成誤差。
Yarn?既然是?Facebook?家的東西,那我們就首先試一下安裝他家的?React?好了:
首先當然是主角?yarn?啦。需要注意的是?yarn?安裝依賴的方式不同于?npm?,你需要執行以下命令來安裝依賴:
yarn add reactadd react <span style="color:green"># same as npm install react</span>可以看到?yarn?安裝?React?用了?13.3s?,這速度也著實令人滿意。
接下來是?npm?。因為?npm?并不顯示命令時間,所以我掐了一下秒表,大概?45s?的樣子,是?yarn?的好幾倍多。好像比起?npm?來說,?yarn?的速度確實快了一些呢,而且?npm?用的還是國內的源。
不過?cnpm?的速度就更快了,只用了?4s?便完成了整個安裝過程。但是畢竟?cnpm是?npm?的衍生產物,處于情理之中。既然這東西可以改善?npm?的速度,誰知道以后會不會有?cyarn?呢?但是通過這個測試我們可以看出,?yarn?的速度相比原生?npm?著實是一個質的飛躍,FASTER 并不是浪得虛名。
接下來我又嘗試了安裝其他的包,多次對比了一下,?平均下來 yarn 會比 npm 快上 3–6 倍(這是安裝體積小一些的包的情況)。
RELIABLE/SECURE
至于這個包管理是否?reliable/secure?,這個我暫時沒想到怎么測試。我只知道在我用的時候,偶爾有幾率會報一些莫名其妙的錯誤,但是反復執行兩遍命令,就又正常工作了。畢竟?yarn?是新出的東西嘛,可以理解。不過就在這一天之內,yarn 的 GitHub 項目主頁已經贏得了 9K star,issues 和 pull request 也有了上千個,可見其火熱的程度,所以對于它的前景,我還是很看好的。
Offline mode
Yarn?的一個亮點就是可以離線安裝依賴,當然,前提是曾經安裝過這個依賴。?Yarn會緩存安裝過的包,下次安裝的時候如果指定了?-offline?參數,?Yarn?就會直接從緩存中取出這個包,這樣將大大縮短安裝依賴的時間。
遺憾的是,盡管官方文檔我看了一遍又一遍,這個功能還是無法正常在我的環境上工作。我會找一下原因,這一段稍后補充。
但是這個?feature?真的是讓人眼前一亮,可以說解決了?npm?的一個短板,很致命的短板。有了這樣的功能之后,以后在沒有網絡的環境下也能夠安裝已有的依賴的。而且省去了下載的時間,大大提高了效率。想象一下以后執行?react-native init?的時候不用漫長等待 15 分鐘了,是不是很開心(當然,什么時候?Facebook?把?react-native init?的安裝依賴過程換成自家的包管理安裝還是未知數喔)。
yarn.lock 文件
Yarn?通過一個?yarn.lock?文件,來使得你的程序得以在不同的機器上獲得一致的體驗。雖然這個解釋很牽強,好歹我沒有機翻給大家看,已經很良心了(霧)。感覺這好像是個很高端的東西,其實主要是對?package.json?的一個補充。
有興趣的話,可以看這里的詳細介紹(需要英文好一些喲):
Yarn
Fast, reliable, and secure dependency management.?yarnpkg.com
Summary
忽如一夜春風來,千樹萬樹梨花開。有時候就是眼睛一睜一閉之間,一個新的東西就這樣在你全然不知的時候悄然面世了。今天出了 yarn,明天指不定又會出現什么。慶幸的是,我們還能趕上這個新玩意的早班車。
記得近幾日的一篇高端黑文(大霧),描述了在 2016 年學習 Javascript 這門語言的感受(看這里:?How it feels to learn Javascript in 2016?),確實,這門語言單單一年的發展,就足以嗆死不少人。
但是必須要說?yarn?的出現確實是有進步意義的,他解決了?npm?已知的一些問題,拓展出了新的特性。既然如此,它就是值得去接觸和學習的。盡管距離取代?npm?還有好長的一段時間,走好長的一段路,但是可以預見它的前途將是一片的光明。
總結
以上是生活随笔為你收集整理的Node.js包管理器Yarn的入门介绍与安装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flowable更换数据源与连接池
- 下一篇: SpringBoot启动过程详解