Npkill v0.12.0

Cover con captura de la interfaz de npkill v0.12.0
Cover con captura de la interfaz de npkill v0.12.0
Otros idiomas: English

Ha pasado más de un año desde la última actualización de npkill. De hecho, esta nueva versión casi coincide con el aniversario de la primera funcional, la v0.1.3 (dos intentos fallidos antes de lograr una versión que al menos iniciara 🙃).

Hoy he lanzado la versión v0.12.0 y voy a comentarte todas las novedades que trae.

Por si aún no lo conoces, npkill es una herramienta de línea de comandos que te permite conocer todos los node_modules que viven en tu sistema, junto a información útil como la última vez que fueron usados, o el tamaño que ocupan para que puedas eliminarlos y recuperar espacio en tu disco.

Puedes probarla simplemente ejecutando npx npkill.

Las novedades

Feedback visual al actualizar los valores

Afecta a los indicadores Releasable space y Space saved. Ahora, cada vez que se actualizan los valores (o bien porque se encuentre un nuevo resultado, o se complete la eliminación de un directorio), cambiará brevemente de color para destacar el incremento.

Tareas pendientes

Eliminar node_modules puede llevar más tiempo del esperado, especialmente si hay muchos resultados en pantalla. Esto puede hacer cerremos npkill antes de tiempo.

Para solucionar este problema, se ha añadido un indicador que indica cuántos directorios se están eliminando en ese momento.

Tareas pendientes *sm

Abrir el directorio del proyecto en el explorador de archivos

Gracias a @AhsanAyaz ahora es posible abrir el directorio del proyecto o(pen).

Esto abrirá la ruta del proyecto en tu explorador de ficheros preferido para que le puedas echar un ojo y decidir si necesitas o no dicho node_module.

Nuevo parámetro --dry-run

Al ejecutar npkill con este argumento no se borrará nada. Esto permite probar diversos aspectos sin afectar a los archivos.

Npkill mostrará un aviso cuando se inicie en este modo. El tiempo que tomará “borrar” los resultados será aleatorio.

Dry run badge *md

Vuelve --delete-all

La opción --delete-all/-D hace que npkill borre automáticamente todos los node_modules que se encuentren. Muy útil cuando tienes toneladas de ellos y no tienes ganas de llevar tu pulgar al gimnasio, borrándolos uno a uno.

Esta opción se deshabilitó poco después del lanzamiento de la v0.3.0 de forma preventiva a raíz de unos problemas que estabamos detectando. Ahora que ha pasado tiempo desde aquello y se ha refinado el funcionamiento general, se ha vuelto a traer de vuelta esta funcionalidad. Algo que la comunidad venía echando en falta desde hace tiempo.

Recomendaciones para usar esto:

  1. Acompaña el comando con -x para excluir aquellos node_modules que podrían ser necesarios por otras aplicaciones.
  2. Si el workspace es muy grande, previsualiza los node_modules que se van a borrar con --dry-run para asegurarte de no llevarte por delante algo que no deberías (la dependencia de algún programa como Spotify, por ejemplo).

De cualquier modo, siempre será necesaria una confirmación extra antes de empezar, salvo que a -D le acompañe el argumento -y.

Aviso --delete-all *md

Cambios menores de diseño

  • La sección de los indicadores se ha desplazado 1 fila hacia arriba.
  • La cabecera amarilla, que antes solo contenía las instrucciones de uso, ahora se ha ampliado para ocupar todo el ancho de la terminal.

Curiosamente este último ha sido uno de los cambio más difíciles. Por supuesto, no a nivel técnico, si no más bien por la nostalgia por ser uno de los elementos que llevaba prácticamente sin cambio desde el comienzo del proyecto. Pero bueno, no podemos vivir atados al pasado y creo que ha sido un cambio a mejor.

De cualquier modo, tarde o temprano con la futura llegada de la tan ansiada v1.0.0 cambiarán bastantes más cosas. Mejor acostumbrarse.

Para acabar…

Aunque solo se ha hecho mención a los node_modules, lo cierto es que npkill te permite buscar cualquier tipo de directorio, como .angular, .cache o dist. Para ello, ejecutalo con el parámetro -t "<target>".

Si te gusta npkill, no olvides darle una 🌟 al proyecto en GitHub!