¿Qué significa -save-dev en npm install grunt --save-dev

277

Acabo de empezar a usar Grunt.js . Es bastante difícil de configurar y estoy a punto de crear un package.jsonarchivo.

Después de este tutorial , dice que hay 3 formas de crear un package.jsonarchivo.

Lo primero es hacer npm install grunt --save-dev

¿Pero qué --save-devsignifica? Intenté mirar pero termina en vano.

Vennsoh
fuente
Creo que logro encontrar algunas respuestas. gruntjs.com/getting-started - npmjs.org/doc/json.html#devDependencies
Vennsoh
enlace tutorial roto
SteveC

Respuestas:

317

--save-dev: el paquete aparecerá en tus devDependencies.

De acuerdo con los documentos de instalación de npm .

Si alguien planea descargar y usar su módulo en su programa, entonces probablemente no quiera o necesite descargar y construir la prueba externa o el marco de documentación que usa.

En otras palabras, cuando ejecute npm install, se instalarán las DevDependencies de su proyecto, pero las DevDependencies para cualquier paquete del que dependa su aplicación no se instalarán; Además, otras aplicaciones que tienen su aplicación como dependencia no necesitan instalar sus devDependencies. Dichos módulos solo deberían ser necesarios al desarrollar la aplicación (por ejemplo, gruñido, mocha, etc.).

De acuerdo con los paquetes.json docs

Editar: Intenta visualizar lo que npm installhace:

  • tu proyecto
    • dependencia instalada
      • dependencia instalada
        • dependencia instalada
        • devDependency NO instalado
      • devDependency NO instalado
    • devDependency instalado
      • dependencia instalada
      • devDependency NO instalado
Andreas Hultgren
fuente
2
por defecto no se instalará con dependencias de desarrollo, pero ¿cómo lo instalo entonces? npm install --dev¿bandera?
StanleyZheng
44
@stanzheng No estoy seguro de lo que necesitas saber. Si está en un proyecto y lo ejecuta npm install, también se instalarán las dependencias de desarrollo del proyecto. No desea que se instalen las DevDependencies de una dependencia. Si desea desarrollar en un paquete npm, debe realizar git clone xxxese proyecto y ejecutarlo npm install.
Andreas Hultgren
3
"devDependencies para las dependencias de su aplicación no se instalará cuando ejecute npm install" es incorrecto. Si tengo un package.json y solo contiene "devDependencies" con mis paquetes npm, y luego escribo "npm install", esas "devDependecies" se instalan.
núcleo
66
Traté de entender y no lo hice. Luego traté de entender la visualización y no lo hice. ¿Qué significa cada elemento de viñeta? ¿Una carpeta? ¿Qué significa el elemento tachado? Un directorio no existente? Si eso es cierto, ¿cómo puede enumerar cosas exhaustivamente inexistentes ?
Rafael Eyng
8
Para aclarar, si npm installse ejecuta en su proyecto, se instalarán todas las devDependencies en package.json, pero si empaqueta su proyecto como un nuevo paquete npm y lo publica, cuando alguien más instale su paquete con npm install, las devDependencies no serán instalado en su sistema. ¿Está bien? @stanzheng o puede ejecutar npm install --production para instalar todo en package.json excepto las dependencias de desarrollo
rwilson04
99

Hay (al menos) dos tipos de dependencias de paquetes que puede indicar en sus archivos package.json:

  1. Los paquetes necesarios para usar su módulo se enumeran en la propiedad "dependencias". Usando npm puede agregar esas dependencias a su archivo package.json de esta manera:

    npm install --save packageName
  2. Los paquetes necesarios para ayudar a desarrollar su módulo se enumeran en la propiedad "devDependencies". Estos paquetes no son necesarios para que otros usen el módulo, pero si quieren ayudar a desarrollar el módulo, serán necesarios. Usando npm puede agregar esas devDependencies a su archivo package.json de esta manera:

    npm install --save-dev packageName
Lonnie Best
fuente
35

Para agregar a la respuesta de Andreas, puede instalar solo las dependencias usando:

npm install --production
machinehead115
fuente
7

Documentación de npm para npm install <package-name> --savey npm install <package-name> --save-devse puede encontrar aquí:

https://docs.npmjs.com/getting-started/using-a-package.json#the-save-and-save-dev-install-flags

Un package.jsonarchivo declara metadatos sobre el módulo que está desarrollando. Ambos comandos antes mencionados modifican este package.jsonarchivo. --savedeclarará el paquete instalado (en este caso grunt) como una dependencia para su módulo;--save-devlo declarará como una dependencia para el desarrollo de su módulo.

Pregúntese: ¿será necesario el paquete instalado para usar mi módulo, o solo será necesario para desarrollarlo?

Niko Kovacevic
fuente
6

Cuando use el parámetro "--save", su dependencia irá dentro del # 1 a continuación en package.json. Cuando use el parámetro "--save-dev", su dependencia irá dentro del # 2 a continuación en package.json.

# 1 "dependencias": su aplicación requiere estos paquetes en producción.

# 2 "devDependencies": estos paquetes solo son necesarios para el desarrollo y las pruebas

Sathesh
fuente
5

Para mí, la primera respuesta parece un poco confusa, por lo que para ser breve y limpia:

npm install <package_name>guarda cualquier paquete especificado en dependencias por defecto . Además, puede controlar dónde y cómo se guardan con algunos indicadores adicionales:

npm install <package_name> --no-save Impide guardar en dependencias.

npm install <package_name> ---save-dev actualiza el devDependencies en su paquete. Estos solo se utilizan para pruebas y desarrollo locales.

Puedes leer más en el dcu

AnnaKlein
fuente