Есть ли виртуальная среда для node.js? - PullRequest
122 голосов
/ 06 сентября 2010

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

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

Ответы [ 7 ]

177 голосов
/ 20 апреля 2011

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

39 голосов
/ 12 сентября 2010

Если ваша системная проблема связана с 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');
22 голосов
/ 04 декабря 2010

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

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

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

Также естьодин называется n https://github.com/visionmedia/n

7 голосов
/ 17 декабря 2010

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

Любое решение, вероятно, потребует установки npm иНефть "общесистемная" (то есть в вашем PATH, который может быть где-то в ~), но затем только установка ваших определенных зависимостей в виртуальной среде.

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

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

2 голосов
/ 23 декабря 2014

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

1 голос
/ 18 апреля 2014

выглядит лучше:

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

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

0 голосов
/ 30 ноября 2013

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

https://github.com/visionmedia/n

...