¿Hay alguna manera de determinar si tiene paquetes en su archivo package.json que ya no son necesarios?
Por ejemplo, al probar un paquete y luego comentar o eliminar código, pero olvidando desinstalarlo, termino con un par de paquetes que podrían eliminarse.
¿Cuál sería una manera eficiente de determinar si un paquete podría eliminarse de manera segura?
node.js
dependencies
npm
Josh C
fuente
fuente
depcheck
cada paquete comounused
incorrectonpx depcheck
También hay un paquete llamado
npm-check
:Es bastante poderoso y desarrollado activamente. Una de sus características es la comprobación de dependencias no utilizadas: para esta parte, utiliza el
depcheck
módulo mencionado en la otra respuesta.fuente
npm outdated
comprueba y enumera las versiones actuales, deseadas y más recientes del paquete. Sin embargo, no hay una lista de paquetes no utilizados.Si está utilizando un Unix como SO (Linux, OSX, etc.), entonces puede usar una combinación de
find
yegrep
para buscar declaraciones de requerimiento que contengan el nombre de su paquete:Si busca la
require('name-of-package')
declaración completa , recuerde utilizar el tipo correcto de comillas:o
La desventaja es que no es completamente automático, es decir, no extrae los nombres de los paquetes
package.json
ni los verifica. Necesita hacer esto para cada paquete usted mismo. Dado quepackage.json
es solo JSON, esto podría remediarse escribiendo un pequeño script que usechild_process.exec
para ejecutar este comando para cada dependencia. Y que sea un módulo. Y agréguelo al repositorio de NPM ...fuente
.jsx
archivos y.ts
archivos, etc .: Dfiskeben escribió:
¡Hagamos que la respuesta de Fiskeben sea automática si por alguna razón
depcheck
no funciona correctamente! (Por ejemplo, lo probé con Typecript y me dio errores de análisis innecesarios)Para analizar
package.json
podemos usar el softwarejq
. El siguiente script de shell requiere un nombre de directorio donde comenzar.Primero crea dos archivos temporales donde podemos almacenar en caché los nombres de los paquetes y los archivos.
Comienza con el
find
comando. La primera y segunda línea hacen que ignore las carpetasnode_modules
ybuild
(o lo que quiera). La tercera línea contiene extensiones permitidas, puede agregar más aquí, por ejemplo, archivos JSX o JSON.Una función leerá tipos dependientes.
Primero
cat
es elpackage.json
. Luego,jq
obtiene el grupo de dependencia requerido. ({} +
está ahí para que no arroje un error si, por ejemplo, no hay dependencias de pares en el archivo).Después de eso,
sed
extrae las partes entre las comillas, el nombre del paquete.-n
y.../p
le dice que imprima las partes coincidentes y nada más dejq
la salida JSON de. Luego leemos esta lista de nombres de paquetes en unwhile
bucle.RES
es el número de apariciones del nombre del paquete entre comillas. En este momento esimport
/require
...'package'
/"package"
. Hace el trabajo para la mayoría de los casos.Luego simplemente contamos el número de líneas de resultado y luego imprimimos el resultado.
Advertencias:
tsconfig.json
archivos (lib
opción)grep
manualmente por sólo^USED
yUNUSED
archivos.fuente
Podemos usar el siguiente módulo npm para este propósito:
https://www.npmjs.com/package/npm-check-unused
fuente
Muchas de las respuestas aquí son cómo encontrar elementos no utilizados.
Quería eliminarlos automáticamente .
Instale este proyecto de nodo.
$ npm install -g typescript tslint tslint-etc
En el directorio raíz, agregue un nuevo archivo tslint-imports.json
{ "extends": [ "tslint-etc" ], "rules": { "no-unused-declaration": true } }
Ejecute esto bajo su propio riesgo, haga una copia de seguridad :)
$ tslint --config tslint-imports.json --fix --project .
fuente
npx depcheck --json | jq '.dependencies[]' | xargs -L1 npm rm