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 NPM versión 1.1.1 en Mac 10.6.8.
Cuando ejecuto el siguiente comando desde la raíz del proyecto, instala tanto el dependencies
y devDependencies
:
npm install
Tenía la impresión de que este comando instaló el devDependencies
:
npm install --dev
¿Cómo hago para que npm install
solo se instale dependencies
(para que el entorno de producción solo obtenga esos módulos), mientras que algo así como npm install --dev
instala ambos dependencies
y devDependencies
?
dependencies
ydevDependencies
y cuando cada uno de ellos se utiliza.Respuestas:
El
npm install
comando instalará eldevDependencies
otro juntodependencies
cuando se ejecute dentro de un directorio de paquetes, en un entorno de desarrollo (el valor predeterminado).Use
npm install --only=prod
(o--only=production
) para instalar solodependencies
, y nodevDependencies,
independientemente del valor de laNODE_ENV
variable de entorno.Fuente: npm docs
Nota: Antes de la v3.3.0 de npm (2015-08-13), se llamó a la opción
--production
, es decirnpm install --production
.fuente
npm install yourpackage.tgz
no obtengan también devDependencies. Sin embargo, ese ya es el caso. Vea la respuesta de Kevin Cox a continuación ( stackoverflow.com/a/15826602/825588 ).NODE_ENV=production
algo más que estaba haciendo y no podía entender por quénpm install
no instalar dependencias. Gracias por la respuesta completa.npm install --dev
solo instalaría dependencias de desarrollo--dev
opción está en desuso. Usar en su--only=dev
lugar.¡También me encuentro con ese problema! La instalación de npm es algo confusa y las publicaciones web siguen trayendo los indicadores -d / - dev como si hubiera un modo de instalación explícito de 'desarrollo'.
npm install
instalará tanto " dependencias " como " devDependencies "npm install --production
solo instalará " dependencias "npm install --dev
solo instalará " devDependencies "fuente
NODE_ENV
está configuradoproduction
y lo ejecutanpm install
, no instalará dependencias de desarrollo. Me encontré con este problema en mi Dockerfile.npm --production=false install
(aunque no estoy seguro de si esto funcionará junto con la bandera --dev)La nueva opción es:
Si desea instalar solo devDependencies:
fuente
--only=prod
. Usted, señor, está parcialmente en lo correcto. ; PSi leyó este POST en 2016, logre lo que quiere usando
El argumento hará que solo se instalen devDependencies o solo no devDependencies, independientemente de NODE_ENV.
de: https://docs.npmjs.com/cli/install
fuente
--production
y--only={prod[uction]|dev[elopment]}
.Si ya instaló todas sus dependencias y desea evitar tener que descargar nuevamente sus paquetes de producción de NPM, simplemente escriba:
Esto eliminará sus dependencias de desarrollo de su
node_modules
carpeta, lo cual es útil si está tratando de automatizar un proceso de dos pasos como¡Correr
npm prune
en el medio te ahorrará tener que reinstalar todo!fuente
Cuando se utiliza "npm install", los módulos se cargan y están disponibles en toda la aplicación, independientemente de si son "devDependencies" o "dependencias". Suma de esta idea: todo lo que su package.json define como una dependencia (cualquier tipo) se instala en node_modules.
El propósito de la diferencia entre dependencias / devDependencies / optionalDependencies es lo que los consumidores de su código pueden hacer w / npm para instalar estos recursos.
Según la documentación: https://npmjs.org/doc/json.html ...
Sin embargo, para resolver esta pregunta, si SOLO desea instalar las "dependencias" usando npm, el siguiente comando es:
Esto puede confirmarse mirando el commit de Git que agregó este filtro (junto con algunos otros filtros [enumerados a continuación] para proporcionar esta funcionalidad).
Filtros alternativos que pueden ser utilizados por npm:
@dmarr intente usar npm install --production
fuente
npm instalará dependencias de desarrollo al instalar desde dentro de un paquete (si hay un
package.json
en el directorio actual). Si es de otra ubicación (registro npm, repositorio de git, ubicación diferente en el sistema de archivos) solo instala las dependencias.fuente
npm install some-module
no instalará las dependencias de desarrollo desome-module
.He descubierto que, al intentar instalar dependencias de desarrollo para un paquete que contiene un complemento de nodo, no puede evitar construir el complemento al ejecutar npm install --dev, incluso si solo desea instalar devDependencies. Entonces, tuve que dar la vuelta a npm:
O, mejor (y más sucintamente) todavía,
fuente
Utilice
npm install packageName --save
esta agregará paquete de dependencias , si se utilizanpm install packageName --save-dev
entonces devDependencies .npm install packageName --save-dev
debe usarse para agregar paquetes con fines de desarrollo. Como agregar paquetes TDD (Chai, mocha, etc.). Que se utilizan en el desarrollo y no en la producción.fuente
package.json
pero una vez que estas dependencias ya están guardadas , entonces, cómo forzar lanpm
instalación de solo un tipo específico de dependencia. Cuando leí su respuesta aquí, no aprendí nada que ayude a resolver el problema planteado por el OP.Vale la pena mencionar que puede usar la
NODE_ENV
variable de entorno para lograr el mismo resultado. Particularmente útil si está contenedorizando su aplicación Node (por ejemplo, Docker).El código anterior instalará todas sus dependencias, excepto las de desarrollo (es decir
devDependencies
).si necesita utilizar variables de entorno en su
Dockerfile
más información se puede encontrar aquí .Las variables de entorno son fáciles de sobrescribir cuando sea necesario (por ejemplo, si desea ejecutar su conjunto de pruebas, por ejemplo, en Travis CI). Si ese fuera el caso, podría hacer algo como esto:
Documentación de NPM aquí
Contenedor feliz =)
fuente
Sugiero usar
npm ci
. Si desea instalar solo paquetes necesarios para la producción (como escribió, sindevDependencies
), entonces:o
Si prefiere la vieja escuela,
npm install
entonces:o
Aquí hay una buena respuesta por qué debería usar
npm ci
.fuente
npm ci
, ¡no solonpm install
!Necesita agregar a la respuesta elegida: a partir de ahora,
npm install
en un directorio de paquetes (que contienepackage.json
) instalará devDependencies, mientrasnpm install -g
que no las instalará.fuente
-g
no se instalarádevDependencies
, pero sí instala los paquetes globalmente, lo que a menudo no es el resultado esperado.npm install --production
es la forma correcta de instalar módulos de nodo que son necesarios para la producción. Consulte la documentación para más detalles.fuente
Ahora hay un problema, si tiene package-lock.json con npm 5+. Tienes que eliminarlo antes de usarlo
npm install --production
.fuente
Y, según la pregunta para instalar solo dependencias, el siguiente comando ayudará
fuente