Node.js 如何使用Thread安装多个全局软件包的列表
Node.js 如何使用Thread安装多个全局软件包的列表,node.js,npm,yarnpkg,Node.js,Npm,Yarnpkg,纱线安装-h表明-g(全局)选项已被弃用。我应该如何表明我希望全局安装一组包(来自package.json/warn.lock文件) 我看到的选择: warn global[command]具有ls和add等功能,但不包括install添加仅适用于特定的包名,如果我理解正确的话。我已经准备好了我的warn.lock文件,我不想在命令行上重复我自己 纱线全球添加每个包装一个接一个。现在,我的包列表将是命令式的,而不是声明式的 具体来说,我希望使用其中一个包中的一个可执行文件。我应该如何表示我希
纱线安装-h
表明-g
(全局)选项已被弃用。我应该如何表明我希望全局安装一组包(来自package.json
/warn.lock
文件)
我看到的选择:
具有warn global[command]
和ls
等功能,但不包括add
<代码>添加仅适用于特定的包名,如果我理解正确的话。我已经准备好了我的install
文件,我不想在命令行上重复我自己warn.lock
每个包装一个接一个。现在,我的包列表将是命令式的,而不是声明式的纱线全球添加
yarn global add <package>
纱线全局添加
但是,不要期望在全球范围内轻松安装大量依赖项,这很难通过设计实现,因为这不是一个好主意
相反,纱线的预期流动为:
- 在本地安装所有内容,因此每个项目都是隔离的
- 尽可能从
调用二进制文件/node\u modules/.bin
- 避免全球安装它们很方便,但不是你应该依赖的
~/.warn global
:
mkdir ~/.yarn-global
cd ~/.yarn-global
然后从此处安装应用程序:
yarn add yourapp
最后打开您的配置文件,即.bashrc
或.bash\u profile
并将路径添加到bin目录:
export PATH="$PATH:$HOME/.yarn-global/node_modules/.bin"
从现在起,您在此目录中安装的任何应用程序都可以从shell中的任何位置获得
完成此操作后,您甚至可以创建一个warn global
实用程序脚本,该脚本将仅在这个.warn global目录中运行。例如:
sudo vim /usr/bin/yarn-global
sudo chmod 755 /usr/bin/yarn-global
脚本内容将是:
#!/bin/bash
cd "$HOME/.yarn-global"
yarn $1 "$2"
现在,您可以执行纱线全局添加someapp
,纱线全局升级someapp
,等等。只需键入
纱线全局添加节点
npm安装-g标记toc
纱线决定不支持此功能。纱线将所有全局包添加到您家中的.warn文件夹:
~/.warn/bin
因此,您必须将其导出为:
export PATH="$PATH:$HOME/.yarn/bin"
或者将其添加到主文件夹中的.bashrc文件中随着容器化成为本地应用程序开发和部署到每个环境的标准,这些约定变得不那么相关。每个容器映像都是自己的服务器,您可以使用Dockerfile和docker compose(或其他容器化应用程序的方法)与其他开发人员共享整个开发环境。使用此策略,我可以在部署到prod的确切环境上进行开发,例如操作系统、库、版本等。但是,在Mac或Windows机器上开发容器化应用程序需要虚拟机+本地主机装载目录到VM,然后从VM装载docker卷。当node_模块是卷装载的一部分时,这运行得非常慢。为什么开发人员不能选择做一些不被“推荐”的事情来改善他们的开发体验呢?我认为这应该重新考虑。对于全球纱线安装,只需键入
npm install -g yarn
确保系统上已经安装了节点。使用上述命令,可以全局安装纱线包
注意-“安装”已替换为“添加”(仅适用于软件包)感谢您的回复!当然,对我来说,Thread采用一些本地第一种思维是有道理的,因为最终,每个成熟的开发人员都需要使用他们的依赖关系。我详细阐述的用例是,我正在制作一个docker图像,作为(GitLab)CI步骤的一部分,用于对项目进行lint。所以我并不真正需要隔离,因为这个映像的唯一目的是使用
eslint.js
可执行文件。我认为您在这方面有点太严格了。有很多命令行工具与项目无关,而是与我的shell环境有关,它们绝对是作为全局安装的最佳工具。虽然这通常是个坏主意,但像PM2这样的东西通常会在全球范围内安装。当然,“你没有”是针对问题提出的在全球范围内安装一批软件包的建议。我并不是说你不能在全球范围内安装软件包。在有限的情况下,在全球范围内安装一个软件包是有用的,这就是为什么有这样的功能(尽管有一点摩擦)。@Aurora0001实际上是的,我有。出于与OP类似的目的,我的隔离就是我的docker形象。它是构建和运行的,没有人需要知道文件在其中是如何分布的。相反,他们应该查看源代码。但是,由于我希望将源文件装载到映像中,因此每次保存时容器都会重新编译,我不希望将机器上的节点模块与容器(不同)平台中的节点模块混合使用。安装