Este articulo a sido traducido a partir de este articulo:
NPM hace ya algun tiempo añadio Unpacked Size a los detalles de los paquetes, gracias a esto me di cuenta que una de mis libreria pesaba demasiado para lo que hacia (350kb).
Comence a investigar un poco, I me di cuenta que habia muchos archivos que se estaban publicando, pero no eran necesarios para el correcto funcionamiento del paquete, aparte estaban ignorados en .gitignore...
La solucion fue hacer uso de .npmignore
e ignorar todos los archivos que no eran necesarios. Había oído y visto el archivo .npmignore en otros proyectos, pero nunca tuve razon para probarlo.
Como me comentaron en el post original, esta podría ser solucionado haciendo uso del campo
files
en el archivopackage.json
.
Aparte de esto use una herramienta llamada size-limit
calcula el coste real de correr tu aplicación o modulo y sus dependencias, gracias a esto detecte que tenia un par de dependencias que pesaban excesivamente mucho para lo que las necesitaba. Al cambiar las librerias consegui reducir el tamaño todavía mas.
Algunas librerías que cambie:
Antes | Tamaño | despues | Tamaño |
---|---|---|---|
cli-color | 98.7 kb |
colors | 39.5 kb |
requests | 201 kb |
phin | 10.1 kb |
Como puedes ver, esto hace una gran diferencia para una pequeña librería (-250 kb).
Reduci el paquete de 359 kb
a 59 kb
, alrededor de -83 %
:P
Aviso
Si estas comenzando o no sabes si deberías optimizar, no pierda el tiempo optimizando tu código hasta que comprendas por qué y cómo se está optimizando, la optimizacion precoz o incecesaria puede causar errores y comportamientos no esperados.