Есть ли виртуальная среда для node.js?

Я искал страницу модулей вики, но не могу найти ничего похожего на virtualenv (python) или rvm.

Кто-нибудь здесь разделяет node.js в своей собственной среде? Мне действительно не нравится устанавливать npm для всей системы.


person Frangossauro    schedule 06.09.2010    source источник


Ответы (7)


Если вашей основной проблемой является наличие общесистемных пакетов npm, то, возможно, рассмотрите возможность использования очень крутой команды «bundle» с npm. Это ближе к замораживанию драгоценных камней или использованию упаковщика в рельсах, а не 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');
person bxjx    schedule 12.09.2010
comment
@andho Сам не проверял это, но я понимаю, что последние версии NPM просто используют для этого npm install. - person Marnen Laibow-Koser; 11.02.2012
comment
Проверено и подтверждено сейчас. npm install заменил npm bundle начиная с NPM 1.0, я полагаю. - person Marnen Laibow-Koser; 11.02.2012

nodeenv — виртуальная среда для node.js (аналог virtualenv )

person shorrty    schedule 20.04.2011
comment
Сначала это выглядело великолепно, но мне не удалось выполнить установку npm с помощью nodeenv одновременно с компиляцией node.js (на osx Lion). Вероятно, я просто мог бы использовать nvm install и установить npm отдельно для каждого nodeenv... к тому времени, когда я подумал о том, чтобы попробовать это, у меня уже было несколько версий node, сделанных другими средствами. - person Mikael Lepistö; 13.03.2012
comment
Может использоваться для установки внутри существующей виртуальной среды Python, чтобы среда node.js активировалась вместе со средой Python. См. nodeenv -p. - person naitsirhc; 01.06.2014
comment
nodeenv (фактически virtualenv+nodeenv) также подходит для пользователей fish-shell, поскольку nave и другие не поддерживают никакие другие оболочки, кроме bash и zsh. - person akarca; 30.10.2014
comment
Есть ли для него эквивалент virtualenv-wrapper? - person vmonteco; 28.02.2018
comment
как именно это необходимо, разве npm не устанавливает перечисленные версии (из package.json) в папку модулей узла вашего проекта по умолчанию? или, по крайней мере, у него нет возможности сделать это? Разве это не достаточно отдельно? Интересно, действительно ли мне нужно установить еще один сторонний инструмент... - person tikej; 12.01.2021

Также могут помочь некоторые системы управления версиями Node.

Проверьте Nave https://github.com/isaacs/nave

Также можно использовать NVM https://github.com/creationix/nvm.

Существует также один, который называется n https://github.com/visionmedia/n.

person Community    schedule 04.12.2010
comment
Nvm отлично работает, если вы просто хотите, чтобы разные версии node.js и npm были установлены одновременно. В остальном мне было достаточно установить необходимые модули в каталог проекта с помощью npm. - person Mikael Lepistö; 13.03.2012
comment
Если вы просматриваете nvm или n и хотите автоматически переключаться при смене каталога, посмотрите на avn: github.com/ wbyoung/avn - person wbyoung; 12.05.2015
comment
Насколько я вижу - это не виртуальная среда. Он по-прежнему использует все глобально установленные библиотеки, кроме npm. - person Yannic Hamann; 30.04.2019

Ответ bxjx концептуально точен. Однако обратите внимание, что команда bundle больше не использует каталог. Он всегда сбрасывает пакеты в папку node_modules, чтобы npm знал, где их найти позже (и мог избежать двойной установки зависимостей).

Любое решение, вероятно, будет включать установку npm и nave «для всей системы» (то есть в вашем PATH, который может быть где-то в ~), но затем только установку ваших конкретных зависимостей в виртуальной среде.

Я ответил более подробно по проблеме с github.

Вкратце: вариант использования действителен и полезен, и хотя он в основном присутствует, он не так хорошо обслуживается, как мог бы быть. Мы должны обязательно все обдумать и сделать правильно.

person isaacs    schedule 17.12.2010
comment
Похоже, проблема с GitHub больше не существует. Есть обновленная ссылка? - person Drazisil; 22.03.2020

Вам не всегда нужно устанавливать зависимости глобально. Обычно это рекомендуется, потому что тогда вы можете использовать команды, предоставляемые пакетами 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/!

person gitaarik    schedule 23.12.2014

похоже, есть лучший способ:

Установка Node.js и npm в Python Virtualenv

теперь я могу использовать инструменты узла, не запутывая глобальную среду bin

person Gohan    schedule 18.04.2014

Если вам нравится простота, я искренне рекомендую n компании visionmedia, что может быть проще!

https://github.com/visionmedia/n

person Lars C. Magnusson    schedule 30.11.2013