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

Obromios
fuente

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 .

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

WebDev naranja
fuente
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.

2xj
fuente
gracias por la respuesta actualizada para cubrir la situación actual
DrCord
Aclaró mi duda de larga data. Gracias
Alok Ranjan