Tratando de dar una mejor visión general para principiantes.
npm ha sido históricamente (2010) el administrador de paquetes más popular para JavaScript. Si desea usarlo para administrar las dependencias de su proyecto, puede escribir el siguiente comando:
npm init
Esto generará un package.json
archivo. Contiene todas las dependencias del proyecto.
Luego
npm install
crearía un directorio node_modules
y descargaría las dependencias (que agregó al package.json
archivo) dentro de él.
También creará un package-lock.json
archivo. Este archivo se utiliza para describir el árbol de dependencias que se generó. Permite a los desarrolladores instalar exactamente las mismas dependencias. Por ejemplo, podría imaginar a un desarrollador actualizando una dependencia a v2 y luego a v3 mientras que otro se actualiza directamente a v3.
npm instala las dependencias de una manera no determinista, lo que significa que los dos desarrolladores podrían tener un node_modules
directorio diferente que resulte en comportamientos diferentes . ** npm ha sufrido una mala reputación como, por ejemplo, en febrero de 2018: se descubrió un problema en la versión 5.7.0 en el que ejecutar sudo npm en sistemas Linux cambiaría la propiedad de los archivos del sistema, rompiendo permanentemente el sistema operativo.
Para resolver esos problemas y otros, Facebook introdujo un nuevo administrador de paquetes (2016): Yarn, un administrador de paquetes más rápido, seguro y confiable para JavaScript.
Puede agregar Yarn a un proyecto escribiendo:
yarn init
Esto creará un package.json
archivo. Luego, instale las dependencias con:
yarn install
Se node_modules
generará una carpeta .Yarn también generará un archivo llamado yarn.lock
. Este archivo tiene el mismo propósito que elpackage-lock.json
pero en cambio se construye usando un algoritmo determinista y confiable, lo que conduce a compilaciones consistentes.
Si inició un proyecto con npm , puede migrar a Yarn fácilmente. el hilo consumirá lo mismopackage.json
. Consulte Migración desde npm para obtener más detalles.
Sin embargo, npm se ha mejorado con cada nueva versión y algunos proyectos todavía usan npm sobre hilo .