有没有node.js的虚拟环境?

我已经search了wiki模块页面,但是我找不到类似于virtualenv(python)或者rvm的东西。

这里的任何人在他们自己的环境中分离node.js? 我真的不喜欢在系统上安装npm。

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

这很容易。 只要创build一个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'); 

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

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

退房Nave https://github.com/isaacs/nave

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

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

bxjx的答案在概念上是准确的。 但请注意,bundle命令不再需要一个目录。 它总是将包放到node_modules文件夹中,以便npm知道以后在哪里find它们(并且可以避免重复安装依赖关系)。

任何解决scheme都可能涉及“系统范围”安装npm和nave(也就是说,在您的PATH ,可能在某处),但是只能在虚拟环境中安装特定的依赖关系

我在github问题上做了更彻底的回应。

tl; dr:用例是有效和有用的,虽然它大部分在那里,但是它的效果并不好。 我们应该确保思考,做对。

您并不总是需要全局安装依赖关系。 通常这是推荐的,因为你可以使用npm包提供的命令,但是如果你在本地(在node_modules )目录下安装它,你也可以使用这些命令,它们只能在node_modules/.bin/目录中,所以你必须inputnode_modules/.bin/<command> ,这很烦人,但是你当然可以把这个path添加到你的PATH环境variables中:

 export PATH=node_modules/.bin:$PATH 

然后你可以input<command> ,它就可以工作!

实际上有一个npm命令返回.bin目录的绝对path:

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

当你在项目的子目录中时,这个命令也可以使用,它会返回它在父目录中find的第一个node_modules/.bin目录。

您可以在.bashrc添加该别名,以便自动将.bin/目录添加到PATH

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

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

如果你喜欢它简单,我真的推荐visionmedia的n ,不是更容易!

https://github.com/visionmedia/n

看起来还有更好的办法:

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

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