【发布时间】:2011-04-08 21:13:52
【问题描述】:
我已经搜索了 wiki 模块页面,但找不到类似于 virtualenv (python) 或 rvm 的任何内容。
这里有人在自己的环境中分离 node.js 吗?我真的不喜欢在系统范围内安装 npm。
【问题讨论】:
标签: node.js virtualenv language-comparisons
我已经搜索了 wiki 模块页面,但找不到类似于 virtualenv (python) 或 rvm 的任何内容。
这里有人在自己的环境中分离 node.js 吗?我真的不喜欢在系统范围内安装 npm。
【问题讨论】:
标签: node.js virtualenv language-comparisons
如果拥有系统范围的 npm 包是您的主要问题,那么也许可以考虑在 npm 中使用非常酷的“bundle”命令。这更接近于冻结 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');
【讨论】:
npm install。
npm install 在 NPM 1.0 中替换了 npm bundle。
【讨论】:
nvm 或n 并希望在更改目录时自动切换,请查看avn:github.com/wbyoung/avn
bxjx 的答案在概念上是准确的。但是,请注意 bundle 命令不再需要目录。它总是将包放入node_modules 文件夹,以便 npm 知道以后在哪里找到它们(并且可以避免重复安装依赖项)。
任何解决方案都可能涉及安装 npm 和 nave “系统范围”(即在您的 PATH 中,可能在某处的 ~ 中),然后只安装您的特定依赖项 在虚拟环境中。
我回复得更彻底了on the github issue。
tl;dr:这个用例是有效且有用的,虽然它大部分都在那里,但它并没有得到应有的服务。我们应该确保考虑清楚并正确行事。
【讨论】:
nodeenv - node.js 的虚拟环境(模拟 virtualenv)
【讨论】:
node.js环境与Python环境一起被激活。见nodeenv -p。
如果你喜欢简单,我真心推荐visionmedia的n,再简单不过了!
【讨论】:
【讨论】:
您并不总是需要全局安装依赖项。通常是推荐的,因为你可以使用 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/目录下的所有命令了!
【讨论】:
这允许您在单个 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
【讨论】: