在nodejs中是否有与Python的virtualenv等效的内容?

时间:2016-06-29 16:44:36

标签: node.js dependencies packages development-environment

立即考虑Python:

  • 您可以拥有一个解释器实例,例如2.7。
  • 您可以安装virtualenv,全局及其包装器(只要您拥有权限)。
  • 您可以创建多个Python环境并安装Django所需的全局包。
  • 激活解释器后,您可以运行django-admin.py(环境中可用的全局命令)并创建一个django项目。
  • 获得Django项目后,可以运行python manage.py在项目中运行命令。
  • 也许您可以在项目中安装pundle来安装特定于项目而不是环境范围的软件包。

通过这种方式,您可以拥有一个带有包的项目,在具有某些宽范围包的环境中,提供自己的命令行来执行。你在这里安装了单个解释器,并且*对于相同的解释器,你可以安装几个不同的Django版本(每个版本需要一个不同的环境,但每个版本都有python解释器的别名)

现在我想想一下nodejs和像react,cordova,sails,meteor这样的东西...你有很多选择选择一个,只要它们提供一个命令行。

  • 我第一次安装nodejs,还安装了npm和nvm。
  • 我用nvm安装了一个特定版本的节点。也许我必须手动将节点别名为nodejs或反之,因为许多软件包都很奇怪。
  • 我想创建一个具有特定Cordova版本的Cordova / Ionic应用程序而不是Django,所以我npm install -g ionic在特定的nvm选择版本中。
  • 与Pundle相同,npm对我的申请有内在的支持。
  • 如果我想为我的项目晒出我的cordova版本的特定命令,我可以运行npm run cordova -- build android而不是cordova build android

但是这给我带来了一个问题:对于相同的节点解释器版本,我可以只使用一个全局 cordova或者离子或我想要的任何东西。这意味着:如果我想使用特定版本的nodejs,并且有两个项目需要不同版本的所需命令行,我就无法运行全局命令来创建这样的项目。例如:

  

$ nvm使用mynodeversion   $ ionic start myApp

我将在该命令中使用特定版本的离子,这将为我的项目生成特定于版本的样板。假设离子版本是x1.y1.z1。

现在我想用离子版x2.y2.z2创建一个项目。但如果我尝试这样做:

  

$ nvm使用mynodeversion   $ ionic start myApp

无论我的package.json中引用了哪个离子版本,我都会为同一个解释器为x1.y1.z1版本生成它。

在使用virtualenvs自动解决的Python中:你可以拥有一个特定的Python解释器,用它创建许多不同的环境,安装不同版本的框架,每个virtualenv一个,并为你的项目生成不同版本的样板,这将是与相应的版本兼容。

我的问题是:我如何对nodejs做同样的事情?提供但不限于给定的示例(另一个示例可能出现在sails或react-native)。

1 个答案:

答案 0 :(得分:5)

这很简单:永远不要使用npm install -g,请使用npm install --save-dev。 CLI实用程序将安装在node_modules/.bin文件夹中。为方便起见,它还为你的npm脚本添加到PATH中,所以你可以不用前缀来调用它们。