node.js是否有虚拟环境?

clj7thdc  于 2023-03-17  发布在  Node.js
关注(0)|答案(8)|浏览(209)

我已经搜索了wiki模块页面,但是我找不到任何类似于virtualenv(python)或rvm的东西。
这里有人在自己的环境中分离node.js吗?我真的不喜欢在系统范围内安装npm。

hjzp0vay

hjzp0vay1#

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

ki0zmccv

ki0zmccv2#

如果系统级的npm包是你的主要问题,那么也许可以考虑在npm中使用非常酷的“bundle”命令,这更接近于冻结gems或者在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');
gywdnpxw

gywdnpxw3#

还有一些Node版本管理系统可以提供帮助。
查看Nave https://github.com/isaacs/nave
NVM也可用于https://github.com/creationix/nvm
还有一个叫做n https://github.com/visionmedia/n

sczxawaw

sczxawaw4#

你并不总是需要全局安装依赖项,通常推荐这样做,因为这样你就可以使用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

ekqde3dh

ekqde3dh5#

bxjx的回答在概念上是正确的,但是,请注意bundle命令不再使用目录,它 * 总是 * 将包放到node_modules文件夹中,以便npm知道以后在哪里找到它们(并且可以避免重复安装依赖项)。
任何解决方案都可能涉及“系统范围”安装npm和nave(也就是说,在您的PATH中,它可能在~的某个地方),但随后只在虚拟环境中安装您的 * 特定依赖项 *。
我对github问题的回应更加彻底。
tl;dr:用例是有效的和有帮助的,虽然它大部分都在那里,但它并没有像它应该的那样好。我们应该确保仔细考虑它并正确地做它。
稍后更新:如果您需要更像virtualEnv东西,请查看Nave:https://github.com/isaacs/nave

luaexgnf

luaexgnf6#

看起来有一个更好的办法
Installing Node.js and npm into a Python Virtualenv
现在我可以使用节点工具而不会弄乱全局bin环境

cig3rfwq

cig3rfwq7#

您可以按照here的说明使用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
bakd9h0s

bakd9h0s8#

如果你喜欢简单,我真心推荐visionmedia的n,再简单不过了!
https://github.com/visionmedia/n

相关问题