Hace poco escuché sobre el archivo package.json, pero todos mis pequeños proyectos siempre han funcionado sin él. He instalado muchos módulos npm globalmente y siempre uso var x = require("express"); "solo por ejemplo" sin siquiera inicializar el paquete.json y poner express como una dependencia.
¿Es realmente importante?
En primer lugar, dudo mucho que require("express") funcione sin necesidad de tener el paquete express instalado en la carpeta node_modules de su proyecto, sino globalmente. Sin embargo, hay maneras de lograr esto.
Pero incluso si logró requerir paquetes de la carpeta de instalación global, ¿qué sucede si tiene varios paquetes que requieren diferentes versiones del mismo paquete? Puede haber cambios importantes entre las versiones principales de los paquetes. Por lo tanto, si instala una nueva versión del paquete xy globalmente, es posible que sus proyectos anteriores que esperaban una versión diferente del paquete xy dejen de funcionar.
Solo en su máquina local, puede lograr todo eso, aún sin un package.json .
El objetivo principal del package.json queda claro cuando desea compartir su proyecto con otras personas. Además de cierta información básica (como el nombre del paquete y alguna descripción), también enumerará las dependencias que deben instalarse para que el proyecto sea ejecutable. Si bien las dependencias necesarias pueden existir en su máquina, ¿cómo se asegurará de que también estén instaladas en una máquina diferente sin tenerlas enumeradas en alguna parte? Y el lugar para enumerar las dependencias de un paquete es, sorpresa, sorpresa, el archivo package.json ...
Son globales, no en su proyecto, por lo que cuando realice la implementación, deberá instalar todos los globales para cada servidor.
Yuu puede instalar packages-cli global, pero es mejor que las dependencias del proyecto (también dev on dev dependencies) tengan su propio paquete.json para que pueda implementar.
Además, si comparte su proyecto, alguien sabrá qué paquetes se necesitan.
Lo mejor es tener para cada proyecto su propio paquete.json en su carpeta raíz, incluso si siempre usa las mismas librerías.