在the blog post announcing yarn (an alternative npm client)他們說,「最簡單的入門方法是運行npm install -g yarn
」。但是如果你去the "install yarn" page in their docs,「npm安裝紗線」沒有在任何平臺特定的安裝頁面上列出,它只作爲「替代品」頁面上的三個選項中的第三個提供。此外,當你npm install
紗線,它打印一個棄用警告,「建議使用本地安裝方法爲您的環境安裝Yarn。」所以我的問題是,如果npm install
是最簡單的安裝方法,爲什麼它不是在他們的文檔中推薦的方法?使用npm
安裝紗線有缺點嗎?爲什麼我不使用npm來安裝紗線?
回答
通過npm
安裝紗線沒有明顯的缺點。事實上,我自己選擇這種方法的原因有幾個:
- 這顯然是最簡單的方法。
npm i --global yarn
和你的 可以立即用你的控制檯上的npm
代替yarn
。 - 如果您使用
nvm
並在每個版本的NodeJS保持不同的代碼項目,那麼你可以在一個版本上安裝紗線和沒有它在其他 - 老實說,我能想到的,它不是唯一的原因在特定於平臺的安裝提到的是,NPM平臺無關
由於npm
不是平臺特定的,幾乎可以在任何系統上運行,因此它被列爲備選項。與特定於平臺的安裝相比,沒有優勢或劣勢。區別在於安裝位置,但所有方法都將全局yarn
命令公開給您的CLI。
我認爲他們將其列爲「最簡單的方法」,因爲大多數人已經非常熟悉npm
。
根據紗線項目的維護者,通過NPM goes against the goals of the project安裝紗線,可能會引發問題,並且,一般來說,不是特定於平臺的安裝方法糟糕。
優勢,以推薦特定於平臺的安裝:
紗線隊的問候NPM爲不安全和不可靠的。從紗線的"Installation" page「內經故宮安裝」部分:
注:一般不建議通過NPM安裝的紗線。使用npm安裝Yarn是不確定的,軟件包沒有簽名,並且唯一的完整性檢查是基本的SHA1哈希,這在安裝系統範圍的應用程序時存在安全風險。
由於這些原因,強烈建議您通過最適合您的操作系統的安裝方法安裝Yarn。
運行的紗線,這是一個獨立的包管理工具,通過NPM可導致邊緣的情況下問題(見issue 2072)
- 通過系統包管理器安裝從NPM解耦紗,使您可以運行無NPM紗
- 系統包管理器通常運行規律,保持紗線更新
- 通過NPM安裝紗線slow
優勢,以npm install -g yarn
:
- 方便快捷(
npm install -g yarn
) - 能在任何環境NPM(平臺無關)
- 熟悉範式和過程的Node.js開發人員來完成
- 可方便更新(
npm update -g yarn
)- 紗線update命令存在(
yarn self-update
),但它似乎是broken
- 紗線update命令存在(
- 對系統軟件包管理器不依賴
- 可以通過
nvm
使用不同版本的紗線爲不同的項目或不同版本的Node.js的系統包管理器參數的建議當提到Windows,沒有官方軟件包管理器時(除非您計算Windows更新),安裝往往會崩潰。此外,Windows包管理器(如Chocolatey)通常未配置爲自動更新。
我不確定我是否完全同意紗線團隊對此的決定,但他們確實提出了一些公正的觀點。 Yarn項目還很年輕,如果要成爲npm的替代品,那麼鼓勵npm作爲其主要安裝者是沒有意義的。
無論如何,通過npm安裝似乎現在在大多數情況下工作得很好。
來源:
- 1. 安裝紗或NPM
- 2. 紗線安裝與紗線升級(安裝不起作用)
- 3. 即使安裝紗線也找不到模塊'紗線'
- 4. 爲什麼我運行紗線安裝時缺少一些包裝?
- 5. 什麼使紗線快? npm和紗線之間的主要區別?
- 6. 爲什麼我不能用npm安裝任何gulp依賴項?
- 7. 爲什麼我的npm安裝不起作用?
- 8. 爲什麼npm試圖安裝phantomjs?
- 9. NPM:爲什麼安裝該軟件包?
- 10. 爲什麼NPM install安裝所有node_modules
- 11. 爲什麼不安裝npm install react-native不起作用?
- 12. 我想用紗線就像我使用NPM,沒有鎖。文件
- 13. 爲什麼爲Angualr2安裝nodejs和npm以使用Grails 3.0
- 14. 爲什麼我會用NPM安裝涼亭?
- 15. 爲什麼NPM上安裝的Git的bash不起作用
- 16. 爲什麼oozie將紗線動作提交給紗線?
- 17. 爲什麼不使用pip安裝?
- 18. 爲什麼我在安裝npm模塊時遇到問題?
- 19. 紗線中「npm install --save」的等價物是什麼?
- 20. 爲什麼安裝yeoman時,我一直在使用NodeJs和npm出錯?
- 21. 爲什麼紗線應該更新庫?
- 22. 爲什麼我不能安裝SQLite gem?
- 23. 爲什麼我不能安裝WebORB?
- 24. 爲什麼我不能安裝「快遞」?
- 25. 爲什麼我不能安裝phpmyadmin?
- 26. 爲什麼我不能安裝pyenv?
- 27. 爲什麼我不能安裝寶石?
- 28. 爲什麼安裝npm模塊後不能立即找到?
- 29. 爲什麼meteor安裝npm --save angular-ui-grid不工作?
- 30. 爲什麼npm不安裝某些文件夾?