nodejs 中是否有等同于 Python 的 virtualenv?
Is there an equivalent to Python's virtualenv in nodejs?
现在考虑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 或 viceversa,因为许多包表现得很奇怪。
- 我想创建一个具有特定 Cordova 版本的 Cordova/Ionic 应用程序而不是 Django,因此我
npm install -g ionic
在特定的 nvm-picked 版本中。
- 相当于 Pundle,
npm
对我的应用程序有内在支持。
- 如果我想为我的项目使用我的 cordova 版本的特定命令,我可以 运行 像 npm run cordova -- build android 而不是
cordova build android
。
但这给我带来了一个问题:对于相同的节点解释器版本,我可以只有一个全局 cordova 或ionic 或任何我想要的。这意味着:如果我想使用特定版本的 nodejs,并且有两个项目需要不同版本的所需命令行,我不能 运行 全局命令来创建此类项目。示例:
$ nvm use mynodeversion
$ ionic start myApp
我将在该命令中使用特定版本的 ionic,这将为我的项目生成特定于该版本的样板文件。假设离子版本是 x1.y1.z1.
现在我想创建一个离子版本 x2.y2.z2 的项目。但如果我尝试这样做:
$ nvm use mynodeversion
$ ionic start myApp
我将为同一个解释器生成 x1.y1.z1 版本,无论我的 package.json.
中引用了哪个离子版本
在 Python 中,使用 virtualenvs 自动解决:你可以有一个特定的 Python 解释器,用它创建许多不同的环境,安装不同版本的框架,每个 virtualenv 一个,并且为您的项目生成不同版本的样板,这些样板将与相应的版本兼容。
我的问题是:如何用 nodejs 做同样的事情?提供但不限于给定的示例(另一个示例可能出现在 sails 或 react-native 中)。
很简单:永远不要使用 npm install -g
,使用 npm install --save-dev
。 CLI 实用程序将安装在 node_modules/.bin
文件夹中。为了方便起见,它也被添加到您的 npm 脚本的 PATH 中,因此您可以不带前缀地调用它们。
现在考虑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 或 viceversa,因为许多包表现得很奇怪。
- 我想创建一个具有特定 Cordova 版本的 Cordova/Ionic 应用程序而不是 Django,因此我
npm install -g ionic
在特定的 nvm-picked 版本中。 - 相当于 Pundle,
npm
对我的应用程序有内在支持。 - 如果我想为我的项目使用我的 cordova 版本的特定命令,我可以 运行 像 npm run cordova -- build android 而不是
cordova build android
。
但这给我带来了一个问题:对于相同的节点解释器版本,我可以只有一个全局 cordova 或ionic 或任何我想要的。这意味着:如果我想使用特定版本的 nodejs,并且有两个项目需要不同版本的所需命令行,我不能 运行 全局命令来创建此类项目。示例:
$ nvm use mynodeversion $ ionic start myApp
我将在该命令中使用特定版本的 ionic,这将为我的项目生成特定于该版本的样板文件。假设离子版本是 x1.y1.z1.
现在我想创建一个离子版本 x2.y2.z2 的项目。但如果我尝试这样做:
$ nvm use mynodeversion $ ionic start myApp
我将为同一个解释器生成 x1.y1.z1 版本,无论我的 package.json.
中引用了哪个离子版本在 Python 中,使用 virtualenvs 自动解决:你可以有一个特定的 Python 解释器,用它创建许多不同的环境,安装不同版本的框架,每个 virtualenv 一个,并且为您的项目生成不同版本的样板,这些样板将与相应的版本兼容。
我的问题是:如何用 nodejs 做同样的事情?提供但不限于给定的示例(另一个示例可能出现在 sails 或 react-native 中)。
很简单:永远不要使用 npm install -g
,使用 npm install --save-dev
。 CLI 实用程序将安装在 node_modules/.bin
文件夹中。为了方便起见,它也被添加到您的 npm 脚本的 PATH 中,因此您可以不带前缀地调用它们。