有Node.js virtualenv?

我对Node.js完全陌生 任何人都可以告诉我是否有类似Python的virtualenv ? 我需要在同一台机器上的不同版本的Node.js上运行应用程序。

Tim Caswell的nvm

Tim Caswell检查nvm ,它是Node.js的版本pipe理器。 它允许您并行安装多个版本的Node.js,还可以为您pipe理全局模块caching的与版本无关的变体。 与nvm它基本上归结为:

 $ nvm install 0.10.24 $ nvm use 0.10.24 

然后你有Node.js 0.10.24启动并运行,包括适当的版本npm。

nvm的安装与运行一个简单的shell命令一样简单:

 $ curl https://raw.github.com/creationix/nvm/master/install.sh | sh 

另一种select可能是TJ Holowaychuk或Isaac Z.Schlueter 教堂中殿 ,虽然我没有任何经验。

n由TJ Holowaychuk

基本上,他们的工作非常相似nvm。 安装n与运行shell脚本一样简单:

 $ make install 

之后你可以input:

 $ n 0.10.24 $ n 

然后你可以select你想使用的安装版本。 从我所听到的,如果你在Windows上,n比nvm更好。

由Isaac Z. Schlueter中殿

nave是一个shell脚本,它的用法与nvm类似:

 $ nave install 0.10.24 $ nave use 0.10.24 

就是这样:-)!

我记得在Python中 – 使用pythonbrew在系统上安装的多个Python版本之间切换(例如2.7和3.0)。 对于这个 – Node.js的类比将使用Golo描述的nvm install

当涉及到每个项目包pipe理 – 在Python中,您可以使用virtualenvvirtualenvwrapper (甚至更好)来为您的项目组织模块和特定版本。 在Node.js中假设(每​​个项目都有自己的依赖关系) – 并在package.json文件中指定。

当你执行npm install所有的软件包都被下载并安装在root_dir / .node_modules /目录下(这对于项目是本地的,假设root_dir是Node项目的根目录)。

但是,仍然可以使用此命令为节点安装全局的软件包:

 npm install -g "package_name" 

一般规则是这样的:

  1. 如果您正在安装您要在程序中使用的东西,请使用require('whatever') ,然后将其安装到您的项目的根目录。

  2. 如果你正在安装你想在你的shell中使用的东西,在命令行或者其他地方安装,那么它的二进制文件就会在你的PATH环境variables中。

虽然nvm等是伟大的工具(我个人使用nvm),但他们并不真正提供项目特定的虚拟环境。 如果你需要两个项目,每个都有访问节点v0.11.14,而且还有不同版本的全局npm包? 除非你把它们包装在一个真正的虚拟环境中,否则你对nvm运气不佳。 幸运的是,还有nodeenv ,它甚至集成到virtualenv项目中。 另外,像virtualenvwrapper这样的东西,你可以将环境链接到项目目录以方便访问。

如果使用virtualenvwrapper:

 mkvirtualenv -a project_path -i nodeenv --python=`which python2` ENVNAME deactivate workon ENVNAME nodeenv -p [--prebuilt] [--node=NODE_VER] [--npm=NPM_VER] deactivate workon ENVNAME 

只有当你在一个使用python 3的操作系统(比如Arch Linux)时,才需要使用--python标志,因为npm需要python 2. deactivate / workon是确保你对环境是完全加载的,这并不总是如此发生。