有node.js的虚拟环境吗?

问题描述 投票:0回答:9

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

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

node.js virtualenv language-comparisons
9个回答
215
投票

nodeenv - Node.js 的虚拟环境(模拟 virtualenv


59
投票

如果系统范围内的 npm 软件包是您的主要问题,那么也许可以考虑在 npm 中使用非常酷的“bundle”命令。这更接近于冻结 gem 或在 Rails 中使用捆绑器,而不是 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');

32
投票

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

查看 Nave https://github.com/isaacs/nave

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

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


10
投票

您并不总是需要全局安装依赖项。通常推荐这样做,因为这样您就可以使用 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


8
投票

bxjx 的答案在概念上是准确的。但是,请注意,bundle 命令不再需要目录。它always将包放入

node_modules
文件夹中,以便npm知道以后在哪里找到它们(并且可以避免重复安装依赖项)。

任何解决方案都可能涉及在“系统范围内”安装 npm 和 nave(即在您的

PATH
中,可能位于
~
某处),但随后仅在虚拟环境中安装您的 特定依赖项

我在 github 问题上回答得更彻底

tl;dr:该用例是有效且有帮助的,虽然它大部分都存在,但它并没有得到应有的服务。我们应该确保考虑清楚并正确执行。


稍后更新:如果您想要更多类似 virtualEnv 的东西,请查看 Nave:

https://github.com/isaacs/nave


3
投票
看起来有更好的方法:

将 Node.js 和 npm 安装到 Python Virtualenv 中

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


3
投票
您可以使用

miniconda,如此处所述。

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

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
    

2
投票
如果你喜欢简单,我真的推荐visionmedia的

n,再简单不过了!

https://github.com/visionmedia/n


0
投票
请检查node-venv包。

https://www.npmjs.com/package/node-venv

Node-Venv 提供了两个主要命令来帮助您管理 Node.js 环境:set 和 activate。

    设置 Node.js 版本
节点 venv 集

替换为您需要的特定版本,例如“14.17.6”或“16.9.0”。

    激活 Node-Venv
要激活 Node-Venv,请运行以下命令:

节点 venv 激活

© www.soinside.com 2019 - 2024. All rights reserved.