在nodejs中是否有等效于Python的virtualenv?

Lui*_*lli 4 dependencies development-environment packages node.js

立即考虑使用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安装了特定版本的节点。由于许多软件包的运行方式很怪异,也许我必须手动将node别名为nodejs或反之。
  • 我想用特定的Cordova版本创建一个Cordova / Ionic应用程序,而不是Django,所以我npm install -g ionic使用的是特定于nvm的版本。
  • 相当于Pundle,npm对我的应用程序具有内在的支持。
  • 如果我想为我的项目使用Cordova版本的特定命令,则可以运行npm run cordova之类的命令-构建android而不是cordova build android

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

$ nvm使用mynodeversion $离子启动myApp

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

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

$ nvm使用mynodeversion $离子启动myApp

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

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

我的问题是:如何使用Node.js做同样的事情?提供但不限于给定的示例(另一个示例可能发生在帆或本机反应中)。

vku*_*kin 7

这很简单:从不使用npm install -g,请使用npm install --save-dev。CLI实用程序将安装在node_modules/.bin文件夹中。为了方便起见,它也已添加到您的npm脚本的PATH中,因此您可以不带前缀地调用它们。

  • `--save-dev` 只是自动向 package.json 文件添加一个条目,以便可以签出存储库、`npm install` 并获取所有工具 (3认同)