2010-09-06 3 views
104

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

Любое здесь разделяет node.js в их собственном env? Мне действительно не нравится устанавливать npm по всей системе.

ответ

29

Если у вас есть системные пакеты npm, вы можете использовать очень крутую команду «bundle» с npm. Это ближе к замораживанию драгоценных камней или использованию связки в рельсах, а не rvm.

Это очень просто. Просто создайте package.json файл:

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

, а затем запустить:

npm bundle vendor 

или если НПМ версия> = 1,0 пробег:

npm install 

замерзнуть в каталог поставщиков , а затем использовать:

require.paths.unshift('./vendor'); 
+1

npm пучок не работает. Не признано как команда – andho

+1

@andho Не проверял это сам, но я понимаю, что последние версии NPM просто используют для этого npm install. –

+11

Протестировано и подтверждено сейчас. «npm install» заменил «npm bundle» с NPM 1.0, я считаю. –

17

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

Заканчивать Неф https://github.com/isaacs/nave

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

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

+1

Nvm отлично работает, если вы просто хотите установить различные версии node.js и npm одновременно. В остальном я нашел достаточно для установки необходимых модулей в каталог проекта с номером npm. –

+1

Если вы смотрите на 'nvm' или' n' и хотите автоматическое переключение при смене каталогов, посмотрите на 'avn': https://github.com/wbyoung/avn – wbyoung

7

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

Любое решение, вероятно, связаны с установкой НПМ и ступицу «общесистемный» (то есть, в вашем PATH, которые могли бы быть в ~ где-то), но только установка ваши конкретные зависимостей в виртуальной среде.

Я ответил более подробно on the github issue.

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

166

nodeenv - виртуальная среда для Node.js (Analog virtualenv)

+0

Это было отлично с самого начала, но я не удалось выполнить установку npm с помощью nodeenv в то же самое время, когда node.js скомпилирован (на osx Lion). Вероятно, я просто мог бы использовать nvm install и устанавливать npm отдельно для каждого nodeenv ... к тому времени, когда я подумал о попытке сделать это, у меня было несколько версий узлов, уже сделанных с помощью других средств. –

+2

Может использоваться для установки _within_ существующей виртуальной среды Python, так что среда 'node.js' активируется вместе с средой Python. См. ['Nodeenv -p'] (https://github.com/ekalinin/nodeenv). – naitsirhc

+2

nodeenv (на самом деле virtualenv + nodeenv) также подходит для пользователей рыболовных снастей, так как nave и другие не поддерживают никаких других оболочек, кроме bash и zsh. – akarca

1

Вы не всегда нужно устанавливать зависимости во всем мире. Обычно это рекомендуется, потому что тогда вы можете использовать команды, предоставляемые пакетами npm, но если вы устанавливаете их локально (в каталоге node_modules), вы также можете использовать эти команды, они только завершаются в каталоге , так что вам придется типа node_modules/.bin/<command>, которая раздражает, но вы, конечно, можете добавить этот путь в переменную окружения PATH:

export PATH=node_modules/.bin:$PATH 

Тогда вы можете просто ввести <command> и это работает!

Там на самом деле команда НПМ, которая возвращает абсолютный путь к .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/!

0

Я думаю, что вообще не имеет смысла работать с узловой средой без установленного узла. Это похоже на то, что вы не устанавливали python и pip, когда хотите работать над проектом python! конечно, для использования virtualenv и virtualenvwrapper предварительным требованием является python.
Если вы хотите работать над проектом Node, это действительно нормально установить узел и npm как минимум.
Если вы просто хотите запустить проект python в Интернете (например, с Django), вы можете использовать версию сборки javascript-файла и загрузить этот файл в свой проект.

Смежные вопросы