Para el lector rápido : este control de calidad se trata delcampo package.json bundledDependencies, no del paquete .
Que hacen las dependencias agrupadas
"bundledDependencies" es exactamente lo que implica su nombre. Dependencias que deberían estar dentro de tu proyecto. Entonces, la funcionalidad es básicamente la misma que las dependencias normales. También estarán empaquetados cuando estén en funcionamiento npm pack
.
Cuando usarlos
Las dependencias normales generalmente se instalan desde el registro npm. Por tanto, las dependencias agrupadas son útiles cuando:
- desea reutilizar una biblioteca de terceros que no proviene del registro npm o que fue modificada
- desea reutilizar sus propios proyectos como módulos
- desea distribuir algunos archivos con su módulo
De esta manera, no tiene que crear (y mantener) su propio repositorio npm, sino obtener los mismos beneficios que obtiene de los paquetes npm.
Cuando no usar dependencias empaquetadas
Sin embargo, al desarrollar, no creo que el punto principal sea evitar actualizaciones accidentales. Tenemos mejores herramientas para eso, a saber, repositorios de código (git, mercurial, svn ...) o ahora bloquear archivos.
Para anclar las versiones de su paquete, puede usar:
Opción 1: utilice la versión 5 de NPM más reciente que viene con el nodo 8. Utiliza un package-lock.json
archivo (consulte el blog del nodo y la versión del nodo 8)
Option2: use hilo en lugar de npm
. Es un administrador de paquetes de facebook, más rápido que npm
y usa un yarn.lock
archivo. De lo package.json
contrario, usa lo mismo .
Esto es comparable a los archivos de bloqueo en otros administradores de paquetes como Bundler o Cargo. Es similar a npm-shrinkwrap.json de npm, sin embargo, no tiene pérdidas y crea resultados reproducibles.
npm
en realidad copió esa característica yarn
, entre otras cosas.
- Option3: este fue el enfoque recomendado anteriormente, que ya no recomiendo. La idea era usar la
npm shrinkwrap
mayor parte del tiempo y, a veces, poner todo, incluida la carpeta node_module, en su repositorio de código. O posiblemente use un paquete retráctil . Las mejores prácticas en ese momento se discutieron en el blog node.js y en los sitios web de desarrolladores joyent .
Ver también
Esto está un poco fuera del alcance de la pregunta, pero me gustaría mencionar el último tipo de dependencias (que yo sepa): dependencias entre pares . Consulte también esta pregunta de SO relacionada y posiblemente los documentos yarn
sobre bundledDependencies .