有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中,您可以使用virtualenv
或virtualenvwrapper
(甚至更好)来为您的项目组织模块和特定版本。 在Node.js中假设(每个项目都有自己的依赖关系) – 并在package.json
文件中指定。
当你执行npm install
所有的软件包都被下载并安装在root_dir / .node_modules /目录下(这对于项目是本地的,假设root_dir是Node项目的根目录)。
但是,仍然可以使用此命令为节点安装全局的软件包:
npm install -g "package_name"
一般规则是这样的:
-
如果您正在安装您要在程序中使用的东西,请使用
require('whatever')
,然后将其安装到您的项目的根目录。 -
如果你正在安装你想在你的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
是确保你对环境是完全加载的,这并不总是如此发生。
- 用于ActiveMQ调用的npm模块
- npm符号链接节点模块到主目录而不是redownloading?
- 如何限制/控制太多的asynchronous调用?
- 使用Visual Studio 2013debugging摩卡testing
- 我应该在哪里写模型或控制器查询(续集)?
- 量angular器插件 – 辅助function – AssertionError:path必须是一个string
- 从node.js中的mongodb-native运行db.repairDatabase()
- Node.js不closures由fs.createReadStream()创build的文件
- ReferenceError:文件没有定义(服务器做jsonP调用)