155 votes

Existe-t-il un environnement virtuel pour node.js ?

J'ai cherché dans la page des modules du wiki, mais je ne trouve rien de similaire à virtualenv (python) ou rvm.

Quelqu'un ici sépare node.js dans son propre env ? Je n'aime vraiment pas installer npm dans tout le système.

194voto

shorrty Points 1081

nodeenv - environnement virtuel pour node.js ( analogique virtualenv )

0 votes

Cela avait l'air bien au début, mais je n'ai pas réussi à installer npm avec nodeenv en même temps que node.js est compilé (sur osx Lion). J'aurais probablement pu utiliser nvm install et installer npm séparément pour chaque nodeenv... au moment où j'ai pensé à essayer, j'avais déjà plusieurs versions de node faites avec d'autres moyens.

3 votes

Peut être utilisé pour installer sur un environnement virtuel Python existant, de manière à ce que les node.js est activé en même temps que l'environnement Python. Voir nodeenv -p .

3 votes

Nodeenv (en fait virtualenv+nodeenv) est également adapté aux utilisateurs de fish-shells puisque nave et les autres ne supportent pas d'autres shells que bash et zsh.

50voto

bxjx Points 1121

Si le fait d'avoir des paquets npm pour l'ensemble du système est votre principal problème, vous pouvez envisager d'utiliser la très cool commande 'bundle' avec npm. C'est plus proche de la congélation des gems ou de l'utilisation de bundler dans rails, plutôt que de rvm.

C'est très facile. Il suffit de créer un fichier package.json :

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

et ensuite exécuter :

npm bundle vendor

ou si votre version de npm est >= 1.0, exécutez :

npm install

pour geler dans le répertoire des fournisseurs. et ensuite utiliser :

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

1 votes

Je ne l'ai pas testé moi-même, mais je crois savoir que les versions récentes de NPM utilisent tout simplement npm install pour ça.

14 votes

Testé et confirmé maintenant. npm install a remplacé npm bundle à partir de NPM 1.0, je crois.

27voto

Epeli Points 5475

Il existe également quelques systèmes de gestion de version Node qui peuvent aider.

Consultez le site de Nave https://github.com/isaacs/nave

On peut aussi utiliser un NVM https://github.com/creationix/nvm

Il en existe également un appelé n https://github.com/visionmedia/n

1 votes

Nvm fonctionne très bien si vous aimez avoir différentes versions de node.js et npm installées en même temps. Pour le reste, j'ai trouvé suffisant d'avoir les modules requis installés dans le répertoire du projet avec npm.

2 votes

Si vous cherchez nvm o n et que vous voulez une commutation automatique lorsque vous changez de répertoire, regardez à avn : github.com/wbyoung/avn

1 votes

Pour autant que je sache, il ne s'agit pas d'un environnement virtuel. Il partage encore toutes les bibliothèques installées globalement, sauf npm.

8voto

isaacs Points 6050

La réponse de bxjx est conceptuellement exacte. Cependant, veuillez noter que la commande bundle ne prend plus un répertoire. Elle toujours dépose des paquets dans le node_modules afin que npm sache où les trouver plus tard (et puisse éviter la double installation des dépendances).

Toute solution impliquera probablement l'installation de npm et de nave "à l'échelle du système" (c'est-à-dire dans votre système d'exploitation). PATH qui pourrait être dans ~ quelque part), mais en installant seulement votre dépendances spécifiques dans l'environnement virtuel.

J'ai répondu plus en détail sur la question github .

tl;dr : Le cas d'utilisation est valable et utile, et bien qu'il soit en grande partie présent, il n'est pas aussi bien servi qu'il pourrait l'être. Nous devrions nous assurer de bien y réfléchir et de le faire correctement.

0 votes

Le problème GitHub semble ne plus exister. Existe-t-il un lien mis à jour ?

2voto

Si vous aimez la simplicité, je recommande vraiment le programme Visionmedia. n On ne peut pas faire plus simple !

https://github.com/visionmedia/n

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X