web-dev-qa-db-fra.com

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

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

Quelqu'un ici sépare-t-il node.js dans son propre env? Je n'aime vraiment pas installer npm à l'échelle du système.

123
Frangossauro

Si votre principal problème est de disposer de paquets npm à l'échelle du système, envisagez peut-être d'utiliser la très cool commande 'bundle' avec npm. Ceci est plus proche de la congélation de gemmes ou de l'utilisation d'un bundle dans Rails, plutôt que de la RVM.

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

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

puis lancez:

npm bundle vendor

ou si votre version de npm est> = 1.0, lancez:

npm install

se figer dans le répertoire du vendeur. et ensuite utiliser:

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

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

178
shorrty

Il existe également des Node systèmes de gestion de versions qui peuvent vous aider.

Départ Nave https://github.com/isaacs/nave

NVM pourrait également être utilisé https://github.com/creationix/nvm

Il y en a aussi une appelée n https://github.com/visionmedia/n

23
Epeli

la réponse de bxjx est conceptuellement exacte. Toutefois, veuillez noter que la commande bundle ne prend plus de répertoire. Il toujours laisse tomber les paquets dans le node_modules, pour que npm sache où les trouver plus tard (et évite les dépendances lors de la double installation).

Toute solution impliquera probablement l’installation de npm et de nave "à l’échelle du système" (c’est-à-dire dans votre PATH, ce qui pourrait se trouver dans ~ quelque part), mais n’installez que vos dépendances spécifiques dans l’environnement virtuel.

J'ai répondu de manière plus approfondie sur le problème github .

tl; dr: Le cas d’utilisation est valide et utile, et même s’il est généralement là, il n’est pas aussi bien servi qu’il pourrait l'être. Nous devons nous assurer de bien réfléchir et de bien faire les choses.

7
isaacs

Vous n'avez pas toujours besoin d'installer des dépendances globalement. Cela est généralement recommandé car vous pouvez utiliser les commandes fournies par les packages npm, mais si vous l'installez localement (dans le fichier node_modules), vous pouvez aussi utiliser ces commandes, elles ne finissent que dans le node_modules/.bin/ répertoire, vous devrez donc taper node_modules/.bin/<command>, ce qui est agaçant, mais vous pouvez bien sûr ajouter ce chemin à votre variable d’environnement PATH:

export PATH=node_modules/.bin:$PATH

Ensuite, vous pouvez simplement taper <command> et il fonctionne!

Il existe en fait une commande npm qui renvoie un chemin absolu à la .bin répertoire:

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

Cette commande fonctionne également lorsque vous vous trouvez dans un sous-répertoire du projet. Elle retournera le premier node_modules/.bin répertoire qu’il trouve dans ses répertoires parents.

Vous pouvez ajouter cet alias dans votre .bashrc pour ajouter automatiquement le .bin/ répertoire vers votre PATH:

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

Donc, quand vous êtes dans un répertoire d'un projet qui a un node_modules/ dans la racine, vous pouvez taper nodebin puis vous pouvez utiliser toutes les commandes présentes dans le .bin/ répertoire!

2
gitaarik

regarde il y a une meilleure façon:

Installation de Node.js et de npm dans un Python Virtualenv

maintenant je peux utiliser les outils de nœuds sans salir l'environnement global bin

1
Gohan

Si vous aimez la simplicité, je vous recommande vivement le logiciel Visionmedia n , ne pourrait être plus simple!

https://github.com/visionmedia/n

0
Lars C. Magnusson