specific mac last from commands javascript node.js npm package.json

javascript - mac - ¿Por qué no quieres usar la opción `--save` para instalar npm?



npm install--save (2)

Leí acerca de usar la opción --save aquí y dice que agregará el paquete instalado a su archivo package.json . Pero, ¿por qué no es esto automático? ¿No quisieras siempre esto?

Tengo entendido que node_modules es el directorio que realmente contiene el código de tu paquete y paquete. package.json es la referencia / lista de todos los paquetes que has instalado, de modo que cuando lo levantas a un repositorio, solo empujas a este último hacia arriba y no el primero, para ahorrar espacio.

Luego, cuando otras personas clonen o desembolsen su repositorio, tendrán el package.json para referenciar e instalar todos los paquetes necesarios para trabajar fuera de su proyecto.

Por lo tanto, ¿no querría siempre que sus paquetes estén en el package.json para que todos puedan obtener lo que se necesita?


Con gestores de paquetes como Bower o npm , creo que --save no es automático por las siguientes razones:

  1. Todas las dependencias no son dependencias de producción (vea --save-dev ).
  2. Algunas veces necesita probar un paquete sin alterar su package.json . package.json .
  3. Es posible que prefiera instalar localmente algunos paquetes que sus colegas instalaron globalmente en su computadora.

Los paquetes instalados sin --save no se consideran como dependencias y se mantienen separados. Puede detectarlos fácilmente como paquetes extraños con npm ls y eliminarlos instantáneamente con npm prune .

Ahora, si piensa que los paquetes extraños son algo malo, puede usar, por --save cada vez que instale un paquete nuevo. Por razones prácticas, tenga en cuenta que puede usar el acceso directo -S lugar de - --save . Además, si a menudo olvida usar la opción, podría definir un alias en su caparazón.

Finalmente, si usa Hilo , observe que el comando yarn add agregará cada paquete como una dependencia. No --save bandera más.


Para citar a uno de los mantenedores de npm:

En los últimos años, ha cambiado bastante aquí, lo que hace que partes de esta cuestión sean discutibles: [...] Es bastante fácil [...] ejecutar npm config set save true como usuarios finales. Dicho esto, todavía hay una serie de puntos difíciles al hacer --save el valor por defecto:

  • Si bien la carga cognitiva de tener que recordar --save o --save-dev en el momento de la instalación es un problema irritante, te obliga a elegir en el momento de la instalación si un paquete es una dependency o devDependency .
  • Mover paquetes entre secciones en package.json sigue siendo un poco más difícil de lo que debería ser, lo que hace que limpiar después de cosas cuando te olvides de especificar que algo [ng] es un devDependency. [...] Como resultado, no creo que sea lo mejor para todos, optar por que todos guarden todo por defecto.

(de https://github.com/npm/npm/issues/5108 )