641 votos

¿Cómo se instalan los módulos NPM "sólo para desarrollo" para Node.JS (package.json)?

Tengo esto en mi archivo package.json (versión abreviada):

{
  "name": "a-module",
  "version": "0.0.1",
  "dependencies": {
    "coffee-script":      ">= 1.1.3"
  },
  "devDependencies": {
    "stylus":             ">= 0.17.0"
  }
}

Estoy usando la versión 1.1.1 de NPM en Mac 10.6.8.

Cuando ejecuto el siguiente comando desde el proyecto Root, se instalan tanto el dependencies y devDependencies :

npm install

Tenía la impresión de que este comando instalaba el devDependencies :

npm install --dev

¿Cómo hago para que npm install sólo instala dependencies (para que el entorno de producción sólo reciba esos módulos), mientras que algo como npm install --dev instala ambos dependencies y devDependencies ?

931voto

Rohan Singh Puntos 4213

El npm install instalará el devDependencies a lo largo de otros dependencies cuando se ejecuta dentro de un directorio de paquetes, en un entorno de desarrollo (el predeterminado).

Utilice npm install --only=prod (o --only=production ) para instalar sólo dependencies y no devDependencies, independientemente del valor del NODE_ENV variable de entorno.

Fuente: Documentación de npm

Nota: Antes de la v3.3.0 de npm (2015-08-13), la opción se llamaba --production es decir npm install --production .

244voto

smertrios Puntos 456

La instalación de npm es algo confusa y los mensajes de la web siguen trayendo las banderas -d/--dev como si hubiera un modo de instalación explícito de "desarrollo".

  • npm install instalará tanto " dependencias " y " devDependencias "

  • npm install --production sólo instalará " dependencias "

  • npm install --dev sólo instalará " devDependencias "

21voto

creatovisguru Puntos 151

Cuando se utiliza "npm install" los módulos se cargan y están disponibles en toda tu aplicación independientemente de si son "devDependencias" o "dependencias". Resumen de esta idea: todo lo que su package.json define como una dependencia (de cualquier tipo) se instala en node_modules.

El propósito de la diferencia entre dependencies/devDependencies/optionalDependencies es lo que los consumidores de tu código pueden hacer con npm para instalar estos recursos.

Según la documentación: https://npmjs.org/doc/json.html ...

Si alguien está planeando descargar y utilizar su módulo en su programa en su programa, probablemente no querrá o necesitará descargar y construir la prueba externa o el marco de documentación que usted utiliza.

En este caso, es mejor listar estos elementos adicionales en un devDependencias.

Estas cosas se instalarán siempre que la bandera de configuración --dev esté activada. Esta bandera se establece automáticamente al hacer npm link o al al hacer npm install desde root de un paquete, y puede ser manejado como cualquier otro parámetro de configuración de npm. Vea config(1) para más información sobre el tema.

Sin embargo, para resolver esta cuestión, si quieres instalar SOLO las "dependencias" usando npm, el siguiente comando es:

npm install --production

Esto se puede confirmar mirando el Git commit que añadió este filtro (junto con algunos otros filtros [listados abajo] para proporcionar esta funcionalidad).

Filtros alternativos que pueden ser utilizados por npm:

--save          => updates dependencies entries in the {{{json}}} file
--force         => force fetching remote entries if they exist on disk 
--force-latest  => force latest version on conflict
--production    => do NOT install project devDependencies
--no-color      => do not print colors

@dmarr intenta usar npm install --production

16voto

Kevin Cox Puntos 725

npm instalará las dependencias dev cuando se instale desde dentro de un paquete (si hay un package.json en el directorio actual). Si es desde otra ubicación (registro npm, repo git, ubicación diferente en el sistema de archivos) sólo instala las dependencias.

2voto

ack Puntos 582

Hay que añadir a la respuesta elegida: A partir de ahora, npm install en un directorio de paquetes (que contiene package.json ) instalará las devDependencias, mientras que npm install -g no los instalará.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X