чи існує віртуальне середовище для node.js?


133

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

Хтось тут відокремлює node.js у власному оточенні? Мені дуже не подобається встановлювати npm для системи.

Відповіді:


44

Якщо у вас є основні системні пакети npm - ваша головна проблема, можливо, варто подумати про використання дуже класної команди "bundle" з npm. Це ближче до заморожування дорогоцінних каменів або використання пакету в рейки, а не об / хв.

Це дуже просто. Просто створіть файл 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');

1
@andho ще не перевіряв цього, але я розумію, що останні версії NPM просто використовують npm installдля цього.
Marnen Laibow-Koser

13
Випробувано та підтверджено зараз. npm installзамінено npm bundleна NPM 1.0, я вважаю.
Marnen Laibow-Koser

184

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


На початку це виглядало чудово, але мені не вдалося виконати встановлення npm з nodeenv одночасно з компільованим node.js (на OSX Lion). Напевно, я просто міг би використовувати nvm install та встановлювати npm окремо для кожного nodeenv ... до моменту, коли я подумав про це, у мене було кілька версій вузлів, вже зроблених іншими засобами.
Mikael Lepistö

2
Можна використовувати для встановлення в існуючому віртуальному середовищі Python, так що node.jsсередовище активується разом із середовищем Python. Див nodeenv -p.
naitsirhc

3
nodeenv (фактично virtualenv + nodeenv) також підходить для користувачів рибних оболонок, оскільки nave та інші не підтримують інших оболонок, ніж bash та zsh.
akarca

1
Чи є для нього також еквівалент virtualenv-обгортки?
vmonteco

25

Є також деякі системи управління версіями Node, які можуть допомогти.

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

NVM також можна використовувати https://github.com/creationix/nvm

Існує також одна назва, яка називається n https://github.com/visionmedia/n


1
Nvm чудово працює, якщо ви просто хочете одночасно встановлювати різні версії node.js і npm. Для решти я знайшов достатньо встановити необхідні модулі для проектування каталогу з npm.
Mikael Lepistö

2
Якщо ви дивитесь nvmабо nхочете автоматичного перемикання під час зміни каталогів, подивіться на avn: github.com/wbyoung/avn
wbyoung

1
Наскільки я бачу, це не віртуальне середовище. Це підвіконня поділяє всі бібліотеки, встановлені у всьому світі, але npm.
Яннік Хаманн

7

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

Будь-яке рішення, ймовірно, передбачає встановлення npm та nave "по всій системі" (тобто у вашому PATH, яке могло б бути ~десь), але потім лише встановлення ваших конкретних залежностей у віртуальному середовищі.

Я відповів більш ретельно на питання github .

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


Здається, проблема GitHub більше не існує. Чи є оновлене посилання?
Дразісіль

4

Вам не завжди потрібно встановлювати залежності в усьому світі. Зазвичай це рекомендується, оскільки тоді ви можете використовувати команди, надані пакетами 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/каталозі!



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.