2010-09-06 25 views
104

He buscado en la página de módulos de wiki, pero no encuentro nada parecido a virtualenv (python) o rvm.¿hay un entorno virtual para node.js?

¿Alguien aquí separa node.js en su propio env? Realmente no me gusta instalar npm en todo el sistema.

Respuesta

29

Si tener paquetes de npm para todo el sistema es su principal problema, entonces tal vez considere usar el genial comando 'bundle' con npm. Esto está más cerca de congelar gemas o usar bundler en rieles, en lugar de rvm.

Es super fácil. Basta con crear un archivo package.json:

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

y luego ejecutar:

npm bundle vendor 

o si su versión de la NGP es> = 1,0 plazo:

npm install 

a congelar en el directorio de proveedores . y luego usar:

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

paquete npm no funciona. No se reconoce como un comando – andho

+1

@andho No lo he probado yo mismo, pero entiendo que las versiones recientes de NPM simplemente usan 'npm install' para esto. –

+11

Probado y confirmado ahora. 'npm install' reemplazó' paquete npm' a partir de NPM 1.0, creo. –

17

Hay también algunos sistemas de gestión de versiones de nodo que pueden ayudar.

Salida Nave https://github.com/isaacs/nave

NVM también podría utilizarse https://github.com/creationix/nvm

También hay una llama n respuesta https://github.com/visionmedia/n

+1

Nvm funciona muy bien si solo desea tener varias versiones de node.js y npm instaladas al mismo tiempo. Por lo demás, me pareció suficiente tener instalados los módulos necesarios para el directorio del proyecto con npm. –

+1

Si está buscando 'nvm' o' n' y desea cambiar automáticamente de directorio, consulte 'avn': https://github.com/wbyoung/avn – wbyoung

7

de bxjx es conceptualmente precisa. Sin embargo, tenga en cuenta que el comando paquete ya no toma un directorio. Es siempre coloca paquetes en la carpeta node_modules, de modo que npm sabe dónde encontrarlos más tarde (y puede evitar la doble instalación de dependencias).

Cualquier solución probablemente implicará la instalación de la NGP y la nave "en todo el sistema" (es decir, en su PATH, que podría estar en algún lugar ~), pero entonces sólo la instalación de sus dependencias específicas en el entorno virtual.

Respondí más detalladamente on the github issue.

tl; dr: El caso de uso es válido y útil, y aunque está principalmente allí, no está tan bien servido como podría ser. Debemos asegurarnos de pensarlo bien y hacerlo bien.

166

nodeenv - entorno virtual para Node.js (analógicos) virtualenv

+0

Esto se veía muy bien al inicio, pero yo no se pudo realizar la instalación de npm con nodeenv al mismo tiempo que node.js se compila (en osx Lion). Probablemente podría haber usado nvm install e instalar npm por separado para cada nodeenv ... cuando pensé en probarlo, ya tenía varias versiones de nodos con otros medios. –

+2

Se puede usar para instalar _within_ un entorno virtual de Python existente, de modo que el entorno 'node.js' se active junto con el entorno de Python. Ver ['nodeenv -p'] (https://github.com/ekalinin/nodeenv). – naitsirhc

+2

nodeenv (en realidad, virtualenv + nodeenv) también es apto para usuarios de cáscaras de pescado, ya que nave y otros no admiten otras conchas que bash y zsh. – akarca

1

No siempre es necesario instalar las dependencias globalmente Por lo general, se recomienda porque puede usar los comandos que proporciona un paquete npm, pero si lo instala localmente (en el directorio node_modules), también puede usar estos comandos, que terminan en el directorio node_modules/.bin/, por lo que tendrá que node_modules/.bin/<command> escribir, lo cual es molesto, pero por supuesto puede agregar esta ruta de acceso a la variable de entorno PATH:

export PATH=node_modules/.bin:$PATH 

a continuación, puede simplemente escribir <command> y funciona!

De hecho, hay un comando de NPM que devuelve una ruta absoluta al directorio .bin:

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

Este comando también funciona cuando se está en un subdirectorio del proyecto, devolverá el primer node_modules/.bin directorio que encuentra en sus directorios principales.

Puede agregar este alias en su .bashrc para añadir automáticamente el directorio .bin/ a su PATH:

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

Así que cuando estás en un directorio de un proyecto que tiene un directorio node_modules/ en la raíz, puede escribir nodebin y luego puede usar todos los comandos que están en el directorio .bin/!

0

Creo que no tiene sentido trabajar en el entorno de nodo sin un nodo instalado. ¡Es como si no hubieras instalado python y pip cuando quieres trabajar en un proyecto de Python! por supuesto, para usar virtualenv y virtualenvwrapper el requisito previo es python.
Si desea trabajar en un proyecto Node es realmente normal instalar node y npm al menos.
Si solo desea ejecutar un proyecto de Python en la web (por ejemplo, con Django), puede usar la versión de compilación del archivo javascript y cargar este archivo en su proyecto.

Cuestiones relacionadas