node.js için sanal bir ortam var mı?


135

Wiki modülleri sayfasını aradım, ancak virtualenv (python) veya rvm'ye benzer bir şey bulamıyorum.

Burada herkes kendi ortamındaki node.js'yi ayırıyor mu? Sistem genelinde npm kurmayı gerçekten sevmiyorum.

Yanıtlar:


44

Sistem genelinde npm paketlerine sahip olmak ana sorununuzsa, npm ile çok havalı 'paket' komutunu kullanmayı düşünebilirsiniz. Bu, rvm yerine mücevherleri dondurmaya veya raylarda paketleyiciyi kullanmaya daha yakındır.

Bu çok kolay. Bir package.json dosyası oluşturun:

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

ve sonra çalıştırın:

npm bundle vendor

veya npm sürümünüz> = 1.0 çalıştırılıyorsa:

npm install

satıcı dizinine dondurmak için. ve sonra şunu kullanın:

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

1
@andho Bunu kendim test etmedim, ancak NPM'nin son sürümlerinin bunun npm installiçin kullandığını anlıyorum .
Marnen Laibow-Koser

13
Şimdi test edildi ve onaylandı. NPM 1.0'dan itibaren npm installdeğiştirildiğine npm bundleinanıyorum.
Marnen Laibow-Koser

184

nodeenv - node.js için sanal ortam (Analog virtualenv )


Bu başlangıçta harika görünüyordu, ancak nodeenv ile npm kurulumunu aynı anda yapamadım, node.js derlendi (osx Lion'da). Muhtemelen nvm kurulumunu kullanabilirdim ve her nodeenv için ayrı ayrı npm kurabilirdim ... denemeyi düşündüğümde zaten başka yollarla yapılmış birden fazla düğüm sürümüm vardı.
Mikael Lepistö

2
Yüklemek için kullanılabilir içinde böylece, varolan Python sanal ortamda node.jsortamı Python ortamı ile birlikte devreye girer. Bakın nodeenv -p.
naitsirhc

3
nodeenv (aslında virtualenv + nodeenv), balık kabuğu kullanıcıları için de uygundur, çünkü nave ve diğerleri bash ve zsh dışında başka kabukları desteklememektedir.
akarca

1
Bunun için bir virtualenv sarıcı eşdeğeri var mı?
vmonteco

25

Yardımcı olabilecek bazı Node sürümü yönetim sistemleri de vardır.

Nave'e bakın https://github.com/isaacs/nave

NVM, https://github.com/creationix/nvm de kullanılabilir

Ayrıca n https://github.com/visionmedia/n adında bir tane var


1
Aynı anda çeşitli node.js ve npm sürümlerine sahip olmak istiyorsanız, Nvm harika çalışıyor. Geri kalanı için npm ile proje dizinine gerekli modüllerin kurulmasını yeterli buldum.
Mikael Lepistö

2
Dizinleri değiştirirken bakıyorsanız nvmveya notomatik geçiş istiyorsanız, şu adrese bakın avn: github.com/wbyoung/avn
wbyoung

1
Gördüğüm kadarıyla n sanal bir ortam değil. Sill, npm dışında tüm global olarak yüklenmiş kitaplıkları paylaşır.
Yannic Hamann

7

bxjx'in cevabı kavramsal olarak doğrudur. Ancak, lütfen paket komutunun artık bir dizin almadığını unutmayın. Bu hep içine paketleri düşer node_moduleso npm sonra onları bulmak için (ve çift yükleyerek bağımlılıkları önleyebilirsiniz) bilir nerede böylece, klasör.

Herhangi bir çözüm muhtemelen npm ve nave "sistem çapında" (yani, sizin içinde PATH, bir ~yerde olabilir ) yüklemeyi, ancak daha sonra yalnızca belirli bağımlılıklarınızı sanal ortama yüklemeyi içerecektir .

Github konusuna daha kapsamlı yanıt verdim .

tl; dr: Kullanım durumu geçerli ve yararlıdır ve çoğunlukla orada olsa da, olabileceği kadar iyi sunulmamaktadır. Bunu iyice düşündüğümüzden ve doğru yaptığımızdan emin olmalıyız.


GitHub sorunu artık mevcut görünmüyor. Güncellenmiş bir bağlantı var mı?
Drazisil

4

Her zaman küresel olarak bağımlılıklar yüklemenize gerek yoktur. Genellikle önerilir, çünkü o zaman npm paketlerinin sağladığı komutları kullanabilirsiniz, ancak yerel olarak ( node_modulesdizine) yüklerseniz , bu komutları da kullanabilirsiniz, bunlar yalnızca dizine sarılır node_modules/.bin/, bu nedenle yazmanız gerekir node_modules/.bin/<command>, bu can sıkıcı bir durumdur, ancak tabi ki bu yolu PATHortam değişkeninize ekleyebilirsiniz :

export PATH=node_modules/.bin:$PATH

O zaman sadece yazabilirsiniz <command>ve işe yarıyor!

Aslında .bindizine mutlak bir yol döndüren bir npm komutu vardır :

$ npm bin
/path/to/node_modules/.bin

Bu komut, projenin bir alt dizinindeyken de çalışır, node_modules/.binüst dizinlerinde bulduğu ilk dizini döndürür .

Dizini .bashrcotomatik olarak şuraya eklemek için bu takma adı şuraya ekleyebilirsiniz :.bin/PATH

alias nodebin='export PATH=$(npm bin):$PATH'

Yani node_modules/, kök dizininde bir dizini olan bir projenin dizinindeyken, yazabilir nodebinve ardından .bin/dizindeki tüm komutları kullanabilirsiniz !



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.