node.js有虚拟环境吗?

Fra*_*uro 125 language-comparisons virtualenv node.js

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

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

sho*_*rty 180

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

  • nodeenv(实际上是virtualenv + nodeenv)也适用于fish-shell用户,因为nave和其他人不支持除bash和zsh之外的任何其他shell. (3认同)
  • 是否还有一个 virtualenv-wrapper 等效项? (3认同)
  • 可用于在现有Python虚拟环境中安装_within,以便与Python环境一起激活`node.js`环境.见[`nodeenv -p`](https://github.com/ekalinin/nodeenv). (2认同)
  • 到底是如何需要的,npm 默认情况下不会在项目的节点模块文件夹中安装列出的版本(来自 package.json)吗?或者至少它没有选择这样做?这还不够分开吗?我想知道我是否真的需要安装另一个第三方工具...... (2认同)

bxj*_*xjx 41

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

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

{ "name": "yourapp", "version": "0.0.1", "dependencies": {"jade": "0.4.1"}}
Run Code Online (Sandbox Code Playgroud)

然后运行:

npm bundle vendor
Run Code Online (Sandbox Code Playgroud)

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

npm install
Run Code Online (Sandbox Code Playgroud)

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

require.paths.unshift('./vendor');
Run Code Online (Sandbox Code Playgroud)

  • 现在经过测试和确认.我相信`npm install`取代了NPM 1.0的`npm bundle`. (13认同)

Epe*_*eli 24

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

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

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

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

  • 如果您正在查看 `nvm` 或 `n` 并希望在更改目录时自动切换,请查看 `avn`:https://github.com/wbyoung/avn (2认同)

isa*_*acs 7

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

任何解决方案都可能涉及安装npm和nave"系统范围"(也就是说,在你的PATH,可能在~某个地方),但之后只在虚拟环境中安装你的特定依赖项.

对github问题的反应更加彻底.

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


git*_*rik 6

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

export PATH=node_modules/.bin:$PATH
Run Code Online (Sandbox Code Playgroud)

然后你就可以打字<command>,它的工作原理!

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

$ npm bin
/path/to/node_modules/.bin
Run Code Online (Sandbox Code Playgroud)

当您位于项目的子目录中时,此命令也有效,它将返回node_modules/.bin它在其父目录中找到的第一个目录。

您可以在您的中添加此别名.bashrc以自动将.bin/目录添加到您的PATH

alias nodebin='export PATH=$(npm bin):$PATH'
Run Code Online (Sandbox Code Playgroud)

所以当你在一个根目录有目录的项目的node_modules/目录中时,你可以输入nodebin,然后你就可以使用目录中的所有命令.bin/