¿Qué hacen los indicadores --save con npm install?


102

Veo instrucciones para instalar un paquete con

npm install <package_name>

o

npm install <package_name> --save

o

npm install <package_name> --save-dev

¿Cuál es la diferencia entre estas opciones?

Respuestas:


88

npm install <package_name> --saveinstala el paquete y actualiza las dependencias en su package.json. Dado que se hizo esta pregunta, hubo un cambio en npm, por lo que se --saveha convertido en la opción predeterminada, por lo que no es necesario usarla --savepara actualizar las dependencias.

npm install <package_name> --no_save instala el paquete pero no actualiza las dependencias que se enumeran en su package.json.

npm install <package_name> ---save-devactualiza el devDependenciesen su paquete. Estos solo se utilizan para pruebas y desarrollo locales.

Puede leer más en https://docs.npmjs.com/getting-started/using-a-package.json .


3
Esta fue la respuesta principal para mi búsqueda en Google sobre "npm --save flag". Considere actualizarlo con la información correcta, es decir, que --save ahora es el predeterminado, y --no-save es necesario para no actualizar la lista de dependencias en package.json
Jonas Rosenqvist

52

npm install toma 3 banderas opcionales exclusivas que guardan o actualizan la versión del paquete en su package.json principal:

-S, --save: El paquete aparecerá en sus dependencias.

-D, --save-dev: El paquete aparecerá en sus devDependencies.

-O, --save-optional: El paquete aparecerá en sus dependencias opcionales.

Al usar cualquiera de las opciones anteriores para guardar dependencias en su package.json, hay una marca opcional adicional:

-E, --save-exact: Las dependencias guardadas se configurarán con una versión exacta en lugar de utilizar el operador de rango semver predeterminado de npm. Además, si tiene un npm-shrinkwrap.json, también se actualizará.

<scope>es opcional. El paquete se descargará del registro asociado con el alcance especificado. Si no hay ningún registro asociado con el ámbito dado, se asume el registro predeterminado. Consulte npm-scope.

Nota: si no incluye el símbolo @ en el nombre de su ámbito, npm lo interpretará como un repositorio de GitHub, consulte a continuación. Los nombres de los ámbitos también deben ir seguidos de una barra.

Ejemplos:

npm install sax --save
npm install githubname/reponame
npm install @myorg/privatepackage
npm install node-tap --save-dev
npm install dtrace-provider --save-optional
npm install readable-stream --save --save-exact

Nota: Si hay un archivo o carpeta con nombre <name>en el directorio de trabajo actual, entonces intentará instalarlo y solo intentará buscar el paquete por nombre si no es válido.

(de documentos oficiales) https://docs.npmjs.com/cli/install


52
Si bien la --saveopción aún parece funcionar, ya no es necesaria: los paquetes ahora se guardan en dependencias de forma predeterminada . La lógica ahora está invertida: si no desea guardar su paquete, debe especificarlo--no-save
Coruscate5

Gracias, @ Coruscate5 respondió mi pregunta exactamente.
Kon

28

La --savebandera ya no sirve para nada.

Anteriormente, como se señaló en las otras respuestas, la --savebandera actualizaba las dependencias en el package.jsonarchivo del proyecto , pero npm installahora incluye esta funcionalidad de forma predeterminada.

En este punto, si desea evitar npm installguardar dependencias, debe usar la --no-savebandera.

Gracias a Coruscate5 por mencionar esto en su comentario .

Más información en la documentación de npm-install :

npm install guarda los paquetes especificados en dependencias de forma predeterminada. Además, puede controlar dónde y cómo se guardan con algunas banderas adicionales:

-P, --save-prod: El paquete aparecerá en sus dependencias. Este es el valor predeterminado a menos que estén presentes -D u -O.

-D, --save-dev: El paquete aparecerá en devDependencies.

-O, --save-optional: El paquete aparecerá en sus dependencias opcionales.

--no-save: evita que se guarden las dependencias.

Al usar cualquiera de las opciones anteriores para guardar dependencias en su package.json, hay dos indicadores opcionales adicionales:

-E, --save-exact: las dependencias guardadas se configurarán con una versión exacta en lugar de utilizar el operador de rango semver predeterminado de npm.

-B, --save-bundle: Las dependencias guardadas también se agregarán a su lista bundleDependencies.


gracias por la respuesta actualizada para cubrir la situación actual
DrCord

Aclaró mi duda de larga data. Gracias
Alok Ranjan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.