如何使用yarn安装全局包

jle*_*hon 58 node.js npm yarnpkg

yarn install -h表明-g(全局)选项是DEPRECATED.我该如何表明我想在全局安装一堆软件包(来自package.json/ yarn.lockfiles)?

我看到的选项:

  • yarn global [command]有事情ls,add但有,但没有install.add如果我理解正确,只适用于特定的包名称.我已经yarn.lock准备好了我的文件,我不想在命令行上重复自己.
  • yarn global add每个包一个接一个.现在我的包列表将是必要的而不是声明性的.

特别是,我想使用其中一个包中的一个可执行文件.

vij*_*jay 55

只需输入

__CODE__

  • 这看起来像是内置的,为什么它不是公认的答案?也许是最近的? (2认同)
  • @Vadorequest因为它实际上不是答案。该问题具有描述,与标题的情况略有不同。 (2认同)
  • 使用错误:“yarn global”命令已在 2.x 中删除 - 考虑使用“yarn dlx”或第三方插件 (2认同)

Aur*_*001 35

我应该如何表明我想在全局安装一堆软件包(来自package.json/yarn.lock文件)?

你没有.不鼓励全球安装,并且很少有情况需要,甚至是有帮助的.

文档所述:

对于绝大多数软件包而言,拥有全局依赖项被认为是一种不好的做法,因为它们是隐含的.最好在本地添加所有依赖项,以便它们是显式的,并且使用项目的任何其他人都获得相同的依赖项集.

如果您尝试使用具有bin的CLI工具,则可以在./node_modules/.bin目录中访问这些工具.

如果您确实想要在全球范围内安装它,请使用./node_modules/.bin,但不要期望在全局范围内轻松安装大量依赖项 - 设计很难做到,因为这不是一个好主意.

代替:

  • 在本地安装一切,因此每个项目都是隔离的
  • ./node_modules/.bin尽可能调用二进制文件
  • 避免全局安装 - 这是一种方便,但不是你应该依赖的.

  • 我觉得你在那里过于严格.有许多命令行工具与项目无关,而是我的shell环境,这些工具绝对是最佳的全局安装. (60认同)
  • 感谢您的答复!当然,对我来说,纱线采用一些本地优先思维是有道理的,因为最终,每个成年开发人员都需要使用它们的依赖关系.我的用例 - 详细说明 - 我正在制作一个用于将项目作为(GitLab)CI步骤的一部分进行lint的docker镜像.所以我真的不需要隔离,因为这个图像的唯一目的是使用`eslint.js`可执行文件. (2认同)
  • 我同意 Tommi 的观点。虽然通常是个坏主意,但像 PM2 这样的东西通常会在全球范围内安装。 (2认同)

lau*_*ent 12

对于那些感兴趣的人,这里有一种安装和管理通过纱线安装的全球应用程序的方法.

首先创建一个包含应用程序的目录,例如~/.yarn-global:

mkdir ~/.yarn-global
cd ~/.yarn-global
Run Code Online (Sandbox Code Playgroud)

然后从这里安装您的应用程序:

yarn add yourapp
Run Code Online (Sandbox Code Playgroud)

最后打开您的配置文件,即.bashrc或者.bash_profile添加bin目录的路径:

export PATH="$PATH:$HOME/.yarn-global/node_modules/.bin"
Run Code Online (Sandbox Code Playgroud)

从现在开始,您在此目录中安装的任何应用程序都可以在shell中的任何位置使用.

完成此操作后,您甚至可以创建一个yarn-global仅在此.yarn-global目录中运行的实用程序脚本.例如:

sudo vim /usr/bin/yarn-global
sudo chmod 755 /usr/bin/yarn-global
Run Code Online (Sandbox Code Playgroud)

脚本内容将是:

#!/bin/bash
cd "$HOME/.yarn-global"
yarn $1 "$2"
Run Code Online (Sandbox Code Playgroud)

现在你可以做yarn-global add someapp,yarn-global upgrade someapp等等.


Dr-*_*ket 6

Yarn 2凭借其无限的智慧,已经移除了yarn global.

如果您想运行一个包,例如firebase-tools,您现在可以通过 来执行yarn dlx firebase-tools <parameters>,而不是安装它然后调用已安装的包。

这是一个糟糕的决定,我希望 Yarn 能够恢复它。