node.js有虚拟环境吗?

时间:2010-09-06 18:15:47

标签: node.js virtualenv language-comparisons

我搜索过wiki模块页面,但是找不到类似virtualenv(python)或rvm的东西。

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

7 个答案:

答案 0 :(得分:177)

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

答案 1 :(得分:39)

如果系统范围的npm软件包是你的主要问题,那么可以考虑使用非常酷的'bundle'命令和npm。这更接近冻结宝石或在铁轨中使用捆绑器,而不是rvm。

这非常容易。只需创建一个package.json文件:

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

然后运行:

npm bundle vendor

或者如果你的npm版本是> = 1.0 run:

npm install

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

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

答案 2 :(得分:21)

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

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

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

还有一个名为n https://github.com/visionmedia/n

答案 3 :(得分:7)

bxjx的回答在概念上是准确的。但请注意,bundle命令不再占用目录。 总是将包丢弃到node_modules文件夹中,以便npm知道以后在哪里找到它们(并且可以避免重复安装依赖项)。

任何解决方案都可能涉及安装npm和nave“系统范围”(即在PATH中,可能位于~某处),但只安装特定的虚拟环境中的依赖项

我的回复更为彻底on the github issue

tl; dr:用例是有效且有用的,虽然它主要在那里,但它并没有得到尽可能好的服务。我们应该确保通过并做好。

答案 4 :(得分:2)

您并不总是需要全局安装依赖项。通常它是推荐的,因为那时你可以使用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,然后您可以使用{{1}中的所有命令目录!

答案 5 :(得分:1)

看起来有更好的方法:

Installing Node.js and npm into a Python Virtualenv

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

答案 6 :(得分:0)

如果你喜欢它简单,我真的推荐visionmedia n,这简直太容易了!

https://github.com/visionmedia/n