¿Cómo instalo un módulo globalmente usando npm?

202

Recientemente instalé Node.js y el módulo npm en OSX y creo que tengo un problema con la configuración:

npm install [MODULE] is not installing the node.js module to the default path 
which is /usr/local/lib/node_modules.
Cristian
fuente

Respuestas:

347

Si desea instalar un módulo npm globalmente, asegúrese de usar el nuevo -gindicador, por ejemplo:

npm install forever -g

Las recomendaciones generales sobre la instalación del módulo npm desde 1.0rc (tomado de blog.nodejs.org ):

  • Si está instalando algo que desea usar en su programa, usando require ('lo que sea'), luego instálelo localmente , en la raíz de su proyecto.
  • Si está instalando algo que desea usar en su shell, en la línea de comando o algo así, instálelo globalmente , de modo que sus binarios terminen en su variable de entorno PATH.

Recientemente utilicé estas recomendaciones y se redujo sin problemas. Instalé para siempre globalmente (ya que es una herramienta de línea de comandos) y todos mis módulos de aplicación localmente.

Sin embargo, si desea utilizar algunos módulos a nivel mundial (es decir, express o mongodb), tome este consejo (también tomado de blog.nodejs.org ):

Por supuesto, hay algunos casos en los que desea hacer ambas cosas. Coffee-script y Express son buenos ejemplos de aplicaciones que tienen una interfaz de línea de comandos, así como una biblioteca. En esos casos, puede hacer uno de los siguientes:

  • Instalarlo en ambos lugares . En serio, ¿tienes poco espacio en el disco? Está bien, de verdad. Son pequeños programas de JavaScript.
  • Instálelo globalmente y luego npm link coffee-script o npm link express (si estás en una plataforma que soporta enlaces simbólicos.) A continuación, sólo tiene que actualizar la copia mundial para actualizar todos los enlaces simbólicos también.

La primera opción es la mejor en mi opinión. Simple, claro, explícito. El segundo es realmente útil si va a reutilizar la misma biblioteca en un montón de proyectos diferentes. (Más información sobre el enlace npm en una futura entrega).

No probé una de esas variaciones, pero parecen ser bastante sencillas.

schaermu
fuente
77
Gracias por las aclaraciones. Isaacs debería reemplazar todo el archivo npm manfile y git wiki con el texto anterior. Podría aclarar la confusión masiva.
Mauvis Ledford
shweeet Esto fue útil, me sorprendió este cambio. En algún momento, npm install dio acceso a la línea de comandos, luego desapareció y no seguía el proyecto lo suficientemente cerca como para captar la transición.
Mark Essel
Esto explica por qué tuve un módulo de nodo en mi directorio de configuración de Apache. . .
Ian Hunter
1
Desde blog.node.js.org : Por lo general, los binarios globales se instalan en {prefix} / bin y los módulos globales se instalan en {prefix} / node_modules y los módulos locales están en ./node_modules, los ejecutables van en ./node_modules/.bin/ . Puede ejecutar npm prefixpara obtener el prefijo local y node prefix -gver el prefijo global :)
nacho4d
"Si está instalando algo que desea usar en su programa, usando require ('lo que sea'), instálelo localmente , en la raíz de su proyecto". - Creo que no es una buena idea si el módulo contiene binarios compilados: debe volver a compilarse en Linux y Windows correctamente. Creo que este tipo de módulos deben configurarse utilizando el entorno NODE_PATH variable ( nodejs.org/api/… )
Sneg
8

En una Mac, encontré que la salida contenía la información que estaba buscando:

$> npm install -g karma
...
...
> ws@0.4.25 install /usr/local/share/npm/lib/node_modules/karma/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)
...
$> ls /usr/local/share/npm/bin
karma nf

Después de agregar /usr/local/share/npm/bina la export PATHlínea en mi .bash_profile, guardarlo e sourceiniciarlo, pude ejecutar

$> karma --help

normalmente.

Droogans
fuente
4

Me gusta usar un archivo package.json en la raíz de la carpeta de la aplicación.

Aquí hay uno que uso

nvm use v0.6.4

http://pastie.org/3232212

npm install
fullstacklife
fuente
1

Necesitas tener privilegios de superusuario,

 sudo npm install -g <package name>
Saurav Kumar
fuente
-1

En Ubuntu, configure la ruta de node_modules en el archivo .bashrc

export PATH = "/ home / username / node_modules / .bin: $ PATH"

Ratnesh Kushwaha
fuente
-5

Es posible que no tenga permisos de escritura para instalar un módulo de nodo en la ubicación global como /usr/local/lib/node_modules, en cuyo caso, ejecute npm install -g package como root.

Dmitri Bouianov
fuente