171

我搜索了 wiki 模块页面,但找不到类似于 virtualenv (python) 或 rvm 的任何内容。

这里有人在自己的环境中分离 node.js 吗?我真的不喜欢在系统范围内安装 npm。

4

8 回答 8

200

nodeenv - node.js 的虚拟环境(模拟virtualenv

于 2011-04-20T08:17:09.953 回答
52

如果拥有系统范围的 npm 包是您的主要问题,那么可以考虑使用非常酷的 'bundle' 命令和 npm。这更接近于冻结 gem 或在 rails 中使用 bundler,而不是 rvm。

这非常容易。只需创建一个 package.json 文件:

{ "name": "yourapp", "version": "0.0.1", "dependencies": {"jade": "0.4.1"}}

然后运行:

npm bundle vendor

或者如果您的 npm 版本 >= 1.0 运行:

npm install

冻结到供应商目录。然后使用:

require.paths.unshift('./vendor');
于 2010-09-12T04:28:30.547 回答
29

还有一些 Node 版本管理系统可以提供帮助。

查看 Nave https://github.com/isaacs/nave

NVM 也可以使用https://github.com/creationix/nvm

还有一个叫n https://github.com/visionmedia/n

于 2010-12-04T13:38:55.967 回答
8

bxjx 的答案在概念上是准确的。但是,请注意 bundle 命令不再需要目录。它总是将包放入node_modules文件夹中,以便 npm 知道以后在哪里可以找到它们(并且可以避免重复安装依赖项)。

任何解决方案都可能涉及安装 npm 和 nave “系统范围”(即,在您的PATH,可能在~某个地方),但随后只在虚拟环境中安装您的特定依赖项。

我在 github 问题上回复得更彻底。

tl;dr:用例是有效且有用的,虽然它大部分都在那里,但它并没有得到应有的服务。我们应该确保考虑清楚并做对。

于 2010-12-17T18:17:55.740 回答
7

您并不总是需要全局安装依赖项。通常是推荐的,因为这样你就可以使用 npm 包提供的命令。但是如果你将它安装在本地(在node_modules)目录中,你也可以使用这些命令,它们只在node_modules/.bin/目录中结束,所以你必须输入node_modules/.bin/<command>,这很烦人,但你当然可以将此路径添加到你的PATH环境中多变的:

export PATH=node_modules/.bin:$PATH

然后,您只需键入即可<command>

实际上有一个 npm 命令可以返回.bin目录的绝对路径:

$ npm bin
/path/to/node_modules/.bin

当您在项目的子目录中时,此命令也有效,它将返回在node_modules/.bin其父目录中找到的第一个目录。

您可以在您的中添加此别名.bashrc以自动将.bin/目录添加到您的PATH

alias nodebin='export PATH=$(npm bin):$PATH'

因此,当您位于node_modules/根目录下的项目目录中时,您可以键入nodebin然后可以使用该.bin/目录中的所有命令!

编辑:

如今,您有一个包可以为您处理所有这些:npx。然后,您只需在命令前加上npx,例如:npx <command>。看看这个:

https://docs.npmjs.com/cli/v7/commands/npx

于 2014-12-23T10:54:57.237 回答
3

看起来有更好的方法:

将 Node.js 和 npm 安装到 Python Virtualenv 中

现在我可以使用节点工具而不会弄乱全局 bin 环境

于 2014-04-18T12:21:13.020 回答
2

如果你喜欢它简单,我真的推荐 visionmedia 的n,再简单不过了!

https://github.com/visionmedia/n

于 2013-11-30T13:26:42.063 回答
2

您可以使用miniconda,如此所述。

这允许您在单个 conda 环境中结合 python 和 nodejs 来完成与全局系统隔离的所有开发工作:

conda create --name my_env python=3.9 nodejs
conda activate my_env

# optionally, also install yarn
conda install -c conda-forge yarn

##############################################
# check it works

# python related
pip --version
python --version

# nodejs related
yarn --version
npm --version
node --version

##############################################
# verify they're inside the conda environment

# python related
which pip
which python

# nodejs related
which yarn
which npm
which node
于 2021-08-14T17:24:54.260 回答