是否存在用于 node.js 的虚拟环境?

我已经搜索了 wiki 模块页面,但是找不到任何类似于 viralenv (python)或 rvm 的内容。

这里有人在自己的 env 中分离 node.js 吗? 我真的不喜欢在整个系统范围内安装 npm。

136913 次浏览

如果拥有系统范围的 npm 包是您的主要问题,那么可以考虑在 npm 中使用非常酷的‘ bundle’命令。这更接近于冻结 gem 或者在 Rail 中使用 bundler,而不是使用 rvm。

非常简单,只需创建 package.json 文件:

{ "name": "yourapp", "version": "0.0.1", "dependencies": {"jade": "0.4.1"}}

然后跑:

npm bundle vendor

或者如果 npm 版本 > = 1.0运行:

npm install

冻结到供应商目录,然后使用:

require.paths.unshift('./vendor');

还有一些 Node 版本管理系统可以提供帮助。

看看大厅 https://github.com/isaacs/nave

NVM 也可以使用 https://github.com/creationix/nvm

还有一个叫做 n https://github.com/visionmedia/n

Bxjx 的答案在概念上是准确的。但是,请注意 bundle 命令不再接受目录。一直都是将软件包放入 node_modules文件夹,这样 npm 就知道以后在哪里可以找到它们(并且可以避免重复安装依赖项)。

任何解决方案都可能涉及安装 npm 和 nave“ system-wide”(即在 PATH中,它可能位于 ~中的某个地方) ,但是只能在虚拟环境中安装 特定的依赖关系

我的反应更彻底 关于 Github 的问题

Dr: 这个用例是有效和有帮助的,虽然它大部分时间都在那里,但是它并没有得到应有的服务。我们应该好好想想,把事情做好。

Nodeenv -node.js 的虚拟环境(模拟 虚拟世界)

如果你喜欢它简单,我真诚地推荐 Visionmedia 的 N,再简单不过了!

Https://github.com/visionmedia/n

看来还有更好的办法:

在 Python Virtualenv 中安装 Node.js 和 npm

现在我可以使用节点工具而不会混乱全局 bin 环境

您并不总是需要在全局范围内安装依赖项。通常建议这样做,因为这样您就可以使用 npm 包提供的命令。但是如果你在本地(在 node_modules)目录中安装它,你也可以使用这些命令,它们只会出现在 node_modules/.bin/目录中,所以你必须键入 node_modules/.bin/<command>,这很烦人,但是你当然可以将这个路径添加到你的 PATH环境变量:

export PATH=node_modules/.bin:$PATH

然后你只要输入 <command>就可以了!

实际上,有一个 npm 命令返回到 .bin目录的绝对路径:

$ npm bin
/path/to/node_modules/.bin

当您在项目的子目录中时,该命令也可以工作,它将返回在其父目录中找到的第一个 node_modules/.bin目录。

您可以在 .bashrc中添加这个别名,以自动将 .bin/目录添加到 PATH:

alias nodebin='export PATH=$(npm bin):$PATH'

因此,当您在一个项目的目录中的根目录中有一个 node_modules/目录时,您可以键入 nodebin,然后您可以使用 .bin/目录中的所有命令!

编辑:

现在,您有一个包可以处理所有这些问题: npx。然后在命令前面加上 npx的前缀,比如: npx <command>。看看这个:

Https://docs.npmjs.com/cli/v7/commands/npx

您可以使用 Miniconda,正如解释的 给你

这允许您将 python & nodejs 组合到一个 conda 环境中,以完成与全局系统隔离的所有开发工作:

conda create --name my_env python=3.9 nodejs
conda activate my_env


# optionally, also install yarn
conda install -c conda-forge yarn


##############################################
# check it works


# python related
pip --version
python --version


# nodejs related
yarn --version
npm --version
node --version


##############################################
# verify they're inside the conda environment


# python related
which pip
which python


# nodejs related
which yarn
which npm
which node