摘要:是一個(gè)新的包管理器,它由開發(fā)者共同開發(fā)完成。從包管理器中借鑒,創(chuàng)建了文件,用來(lái)記錄項(xiàng)目使用每個(gè)包的確切版本。感謝您的閱讀作者煦涵年月日下面是實(shí)驗(yàn)室的微信公眾號(hào)二維碼,歡迎長(zhǎng)按掃描關(guān)注
Yarn是一個(gè)新的Javascript包管理器,它由Facebook, Google, Exponent and Tilde開發(fā)者共同開發(fā)完成。Yarn 不是 NPM 的fork版本,而是它的重新設(shè)計(jì),Yarn 定位為"快速、可靠、安全的依賴管理工具",它的目標(biāo)是解決團(tuán)隊(duì)開發(fā)中使用 NPM 遇到的問題。
隨著 Yarn 的誕生,越來(lái)越多的開發(fā)者轉(zhuǎn)向了 Yarn,那么 NPM 在開發(fā)中有哪些問題,Yarn 是如何解決的呢?
NPM 一些潛在的問題:
嵌套依賴 (npm 3.0版本已修復(fù))
串行安裝
單一個(gè) package 來(lái)源(npmjs.com)
需要網(wǎng)絡(luò)來(lái)安裝軟件包(盡管我們可以創(chuàng)建一個(gè)臨時(shí)緩存)
允許程序包在安裝時(shí)運(yùn)行代碼(不利于安全性)
不確定的包狀態(tài)(不能確定項(xiàng)目的所有副本使用相同的包版本)
Yarn 解決方案:
單依賴包結(jié)構(gòu): 可以使用單一版本的依賴包,安裝更快速,占用磁盤空間更少
并行安裝: 并行下載依賴包,減少下載時(shí)間
多個(gè)包來(lái)源: Yarn 讀取和安裝 npmjs.com 和 Bower安裝包,如果有個(gè)渠道down掉了,可以從另一個(gè)渠道下載包并安裝
自動(dòng)重試: 單個(gè)網(wǎng)絡(luò)請(qǐng)求失敗不會(huì)導(dǎo)致安裝失敗,請(qǐng)求在失敗后會(huì)重試,這解決了由于臨時(shí)網(wǎng)絡(luò)問題而產(chǎn)生的構(gòu)建異常
兼容 NPM: 從 NPM 切換到 Yarn 不需要做特殊兼容處理
yarn.lock: 用來(lái)管理 javascript 包,這個(gè)對(duì)于開發(fā)團(tuán)隊(duì)來(lái)說(shuō)可能是最有用的功能了。 在package.json中,依賴的包版本可以被指定為一個(gè)范圍,也可以不帶版本號(hào)。這個(gè)可能會(huì)導(dǎo)致一種問題,團(tuán)隊(duì)內(nèi)不同開發(fā)人員使用不同版本的軟件包。我們都知道,復(fù)現(xiàn)環(huán)境的能力與完全相關(guān)的依賴關(guān)系對(duì)于高校的調(diào)試和新團(tuán)隊(duì)人員的融入至關(guān)重要。從包管理器(Bundler)中借鑒,Yarn 創(chuàng)建了 yarn.lock文件,用來(lái)記錄項(xiàng)目使用每個(gè)包的確切版本。當(dāng)將此文件提交至 SVN、GIT 等代碼維護(hù)工具,可以保證項(xiàng)目的所有開發(fā)人員共享一套依賴包的版本號(hào)。更多文章請(qǐng)關(guān)注微信公眾號(hào)fedlab。
Yarn 的安裝brew install yarn /* Yarn 團(tuán)隊(duì)不推薦 */ npm install -g yarn
不同平臺(tái)安裝方式各異,具體參見install
NPM CLI vs Yarn CLI初始化項(xiàng)目
npm init yarn init
從 package.json 安裝依賴
npm install yarn
安裝指定包到依賴或者開發(fā)依賴
npm install --save [package] yarn add [package] npm install --save-dev [package] yarn add [package] [--dev/-D]
安裝包到全局
npm install --global [package] yarn global add [package]
安裝指定版本的包
npm install [package]@[version] yarn add [package]@[version]
重新下載所有包
npm reubild yarn install --force
卸載包
npm uninstall [package] npm uninstall --save [package] yarn remove [package] npm uninstall --save-dev [package]
升級(jí)包
rm -rf node_modules && npm install yarn upgrade總結(jié)
相比 NPM,Yarn解決了不確定依賴、網(wǎng)絡(luò)問題、并行下載等問題。然而 NPM 是自己成功的犧牲品,隨著越來(lái)越多的開發(fā)者轉(zhuǎn)移使用 Yarn或者其他依賴平臺(tái),NPM 服務(wù)器可以更有效的使用??傊畠蓚€(gè)包管理器都很優(yōu)秀,這種相互的關(guān)系,驅(qū)使著各自彼此往更優(yōu)秀的方向前進(jìn),以惠及更多的開發(fā)者。
感謝您的閱讀
--eof--
作者[煦涵]
2017年05月13日
下面是「FED實(shí)驗(yàn)室」的微信公眾號(hào)二維碼,歡迎長(zhǎng)按、掃描關(guān)注:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/88294.html
摘要:,下一代編譯器,當(dāng)前版本,它可以處理的所有新語(yǔ)法,并內(nèi)置了擴(kuò)展及類型注解支持,如果對(duì)不是很了解可以查看實(shí)驗(yàn)室微信公眾號(hào)文章煦涵說(shuō)。 Babel,下一代javascript編譯器,當(dāng)前版本 v2.4.0 ,它可以處理ES6的所有新語(yǔ)法,并內(nèi)置了React JSX擴(kuò)展及Flow類型注解支持,如果對(duì)Flow不是很了解可以查看FED實(shí)驗(yàn)室微信公眾號(hào)文章煦涵說(shuō)Flow。 Babel與JavaSc...
摘要:現(xiàn)在已經(jīng)在前端比較流行的等框架中得到使用。今天煦涵就和大家一起來(lái)學(xué)習(xí)以及在實(shí)際項(xiàng)目中的使用。安裝這里我們選擇使用,當(dāng)前你也可以使用如果你對(duì)不是很了解,建議你閱讀煦涵說(shuō)。 Flow是Facebook出品的一個(gè)JavaScript代碼的靜態(tài)類型檢查工具,它做了很多處理,使您的代碼更快,更智能,更自信,更好的適應(yīng)性。現(xiàn)在已經(jīng)在前端比較流行的React 、Vue 等框架中得到使用。今天煦涵就和...
摘要:對(duì)象表示法,是一種數(shù)據(jù)交換格式,能夠在服務(wù)器端交換數(shù)據(jù),年由提出,目的是取代繁瑣笨重的格式。煦涵煦涵煦涵煦涵煦涵參考文檔感謝您的閱讀作者煦涵年月日下面是實(shí)驗(yàn)室的微信公眾號(hào)二維碼,歡迎長(zhǎng)按掃描關(guān)注 JSON(Javascript Object Notaion, javascript 對(duì)象表示法), 是一種數(shù)據(jù)交換格式,能夠在服務(wù)器端交換數(shù)據(jù), 2001年由Douglas Crockfor...
摘要:,是一個(gè)前端資源加載打包工具,現(xiàn)在版本已經(jīng)到,今天的文章不支持介紹的及使用,而是對(duì)最近項(xiàng)目開發(fā)中使用打包時(shí)處理低版本及以下瀏覽器兼容問題做一次總結(jié)。 Webpack,Webpack 是一個(gè)前端資源加載/打包工具,現(xiàn)在版本已經(jīng) release 到 v2.6.1,今天的文章不支持介紹Webpack的API及使用,而是對(duì)最近項(xiàng)目開發(fā)中使用Webpack打包時(shí)處理IE低版本(IE8及以下)瀏覽...
摘要:就是一個(gè)類似于的包管理工具,它是由推出并開源。二的安裝用法和基本工作流安裝以為例你可以通過包管理工具安裝。在使用一個(gè)包之前,你需要執(zhí)行以下命令將其加入依賴項(xiàng)列表會(huì)被加入到文件中的依賴列表,同時(shí)也會(huì)被更新。 一、yarn的背景和介紹一直以來(lái),我們?cè)诎惭b和管理依賴的時(shí)候基本上都會(huì)使用npm,npm是一個(gè)非常優(yōu)秀全面且廣受歡迎的包管理工具,它奠定了前端模塊化開發(fā)的基石,為前端的發(fā)展做出了不可...
閱讀 2638·2021-11-18 10:02
閱讀 2289·2021-09-30 09:47
閱讀 1808·2021-09-27 14:01
閱讀 3120·2021-08-16 11:00
閱讀 3172·2019-08-30 11:06
閱讀 2403·2019-08-29 17:29
閱讀 1543·2019-08-29 13:19
閱讀 453·2019-08-26 13:54