tutorial mac instalar como commands node.js npm

mac - ¿Cómo evita la instalación de los módulos NPM "devDependencies" para Node.js(package.json)?



npm tutorial (13)

¡Me encuentro con ese problema también! La instalación de npm es algo confusa y las publicaciones web siguen trayendo las marcas -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 "

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 la raíz del proyecto, instala las dependencies y devDependencies :

npm install

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

npm install --dev

¿Cómo hago para que npm install solo instale dependencies (para que el entorno de producción solo obtenga esos módulos), mientras que algo como npm install --dev instala tanto dependencies como devDependencies ?


Ahora hay un problema, si tiene package-lock.json con npm 5+. npm install --production eliminarlo antes del uso de npm install --production .


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 "dependencies". 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 / devDependencias / opcionales Dependencias es lo que los consumidores de su código pueden hacer w / npm para instalar estos recursos.

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

Si alguien está planeando descargar y usar su módulo en su programa, entonces probablemente no quieran o necesiten descargar y crear la prueba externa o el marco de documentación que utiliza.

En este caso, es mejor enumerar estos elementos adicionales en un hash devDependencies.

Estas cosas se instalarán siempre que se establezca el indicador de configuración --dev. Este indicador se establece automáticamente al realizar el enlace npm o al realizar la instalación npm desde la raíz de un paquete, y se puede administrar como cualquier otro parámetro de configuración npm. Ver config (1) para más información sobre el tema.

Sin embargo, para resolver esta pregunta, si desea SOLO instalar las "dependencias" usando npm, el siguiente comando es:

npm install --production

Esto se puede confirmar 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:

--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


Descubrí que, al intentar instalar dependencias de desarrollo para un paquete que contiene un complemento de nodo, no puede evitar compilar el complemento cuando se ejecuta npm install --dev incluso si solo desea instalar devDependencies. Entonces, tuve que ir alrededor de la espalda de npm:

node -e ''console.log( Object.keys( require( "./package.json" ).devDependencies ) );'' | / sed -e "s/^[^'']*''//" -e "s/''.*$//" | / xargs npm install

O, mejor (y más sucintamente) todavía,

node -e ''Object.keys( require( "./package.json" ).devDependencies ) .map( function( item ){ console.log( item ) } );'' | xargs npm install


El comando npm install instalará las devDependencies junto con otras dependencies cuando se ejecute dentro de un directorio de paquetes, en un entorno de desarrollo (el predeterminado).

Use npm install --only=prod (o --only=production ) para instalar solo dependencies , y no devDependencies, independientemente del valor de la variable de entorno NODE_ENV .

Fuente: npm docs

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


La nueva opción es:

npm install --only=prod

Si desea instalar solo devDependencies:

npm install --only=dev


Si leyó este POST en 2016, logre lo que quiere usando

--only={prod[uction]|dev[elopment]}

El argumento provocará que solo se instalen devDependencies o solo que no sean devDependencies independientemente del NODE_ENV.

desde: https://docs.npmjs.com/cli/install


Si ya instaló todas sus dependencias y desea evitar tener que descargar sus paquetes de producción de NPM nuevamente, puede simplemente escribir:

npm prune --production

Esto eliminará tus dependencias de desarrollo de tu carpeta node_modules , lo cual es útil si estás tratando de automatizar un proceso de dos pasos como

  1. Webpack mi proyecto, usando dependencias de desarrollo.
  2. Construye una imagen de Docker usando solo módulos de producción

La ejecución de npm prune en medio le ahorrará tener que reinstalar todo!


Use npm install packageName --save esto agregará el paquete en dependencias , si usa npm install packageName --save-dev entonces devDependencies .

npm install packageName --save-dev debe usar para agregar paquetes para propósitos de desarrollo. Como agregar paquetes TDD (Chai, mocha, etc). Que se utilizan en el desarrollo y no en la producción.


Vale la pena mencionar que puede usar la variable de entorno NODE_ENV para lograr el mismo resultado. Particularmente útil si está conteniendo su aplicación Node (por ejemplo, Docker).

NODE_ENV=production npm install

El código anterior instalará todas sus dependencias, pero las de desarrollo (es decir, devDependencies ).

Si necesita utilizar variables de entorno en su Dockerfile , puede encontrar más información here .

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ías hacer algo como esto:

docker run -v $(pwd):/usr/src/app --rm -it -e NODE_ENV=production node:8 npm install

Documentación NPM aquí

producción

  • Predeterminado: falso
  • Tipo: Booleano Se establece en verdadero para ejecutarse en modo "producción".

    1. devDependencies no se instalan en el nivel superior cuando se ejecuta la instalación de npm local sin ningún argumento.
    2. Establezca NODE_ENV = "producción" para los scripts de ciclo de vida.

Contención feliz =)


npm instalará las 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, git repo, ubicación diferente en el sistema de archivos) solo instala las dependencias.


npm install --production es la forma correcta de instalar los módulos de nodo necesarios para la producción. Consulte la documentación para más detalles.


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