在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不安装某些文件夹?