使用Yarn或NPM安装全局软件包之间有什么区别吗?

时间:2019-07-08 19:35:34

标签: npm yarnpkg

是否使用yarn global add PACKAGEnpm install -g PACKAGE安装全局软件包是否重要?

是否根本没有任何区别,例如文件的安装位置? 如果是,那是什么?

4 个答案:

答案 0 :(得分:0)

是的,您是对的,这是不同的。对于npm,它类似于以下内容

/Users/tarunlalwani/.nvm/versions/node/v9.2.0/lib(如果您使用的是nvm

您可以使用

获取此路径
$ npm config get prefix
/Users/tarunlalwani/.nvm/versions/node/v9.2.0

Where does npm install packages?

纱线使用其他路径时

  • Windows:%LOCALAPPDATA%/ Yarn / config / global
  • OSX和Linux非超级用户:〜/ .config / yarn / global
  • Linux(如果以root用户身份登录):/usr/local/share/.config/yarn/global

How to display yarn globally installed packages?

也请参见此线程

https://github.com/yarnpkg/yarn/issues/2049

答案 1 :(得分:0)

您可能想阅读this for understanding differences between npm, yarn and pnpm

在npm中,目录层次结构如下

node_modules
- package-A
- package-B
- package-C
-- some-file-name-in-package-c.js

yarn install某个地方运行时,最好在工作区根目录中,并且一切正常,现在您应该具有类似的文件层次结构:

/package.json
/yarn.lock

/node_modules
/node_modules/cross-env
/node_modules/workspace-a -> /workspace-a

/workspace-a/package.json
/workspace-b/package.json

npm 创建一个package.json,在安装依赖项时会将其添加到文件中。

纱线中,它创建一个yarn.lock文件,该文件与npm-shrinkwrap.json类似,但默认情况下已创建。除了常规信息外,yarn.lock文件还包含要安装内容的校验和,以确保使用相同版本的库。

与npm不同,yarn不需要互联网连接即可安装已经本地缓存的依赖项,从而提供脱机模式。自2012年以来,npm一直未成功请求该功能。

纱线和npm之间的差异可以从纱线official网站借用,因为它指出,

Note: Installation via npm is generally not recommended. npm is non-deterministic, packages are not signed, and npm does not perform any integrity checks other than a basic SHA1 hash, which is a security risk when installing system-wide apps.

For these reasons, it is highly recommended that you install Yarn through the installation method best suited to your operating system.

答案 2 :(得分:0)

这是关于Yarn global

的文档
  

yarn global是用于许多命令的前缀,例如add,bin,   列出并删除。它们的行为与正常版本相同   除了它们使用全局目录存储软件包外。全球   命令使可执行文件可以在您的操作系统上使用

这是关于npm install global mode

的文档
  

在全局模式下(即,在命令后附加-g或--global)   安装当前的包上下文(即当前工作的   目录)作为全局包。

我认为它们之间没有区别。将软件包安装为对开发人员工具有用的全局软件包,它不是任何单个项目的一部分,而是用于本地命令

答案 3 :(得分:0)

是的,这很重要。 纱线提供稳定性,提供已安装软件包的锁定版本。模块的安装速度较高。这对于具有更多依赖性的大型项目非常重要。对于npm,当我们需要在不同的机器上部署项目时,已安装软件包的版本可能会有所不同。从纱线的主要好处来看,我们可能会强调以下几点:

  • 可以从本地缓存安装软件包
  • 强烈绑定软件包版本
  • 允许并行软件包安装

NPM

  • bin链接到$(npm prefix -g)/lib/node_modules
  • 模块已安装到yarn global bin

纱线

  • bin链接到yarn global dir
  • 模块已安装到{{1}}