He decidido experimentar con scripts npm como herramienta de compilación y hasta ahora me gusta. Un problema que me gustaría resolver es que cuando ejecuto un script para ejecutar jshint cuando algo no pasa, obtengo un montón de "npm ERR!" líneas. Me gustaría suprimirlos ya que la salida del linter es más significativa.
¿Existe una buena manera de configurar esto globalmente y hay alguna manera de configurarlo para cada ejecución de script?
Respuestas:
Todos los guiones:
Puede solucionar esto suprimiendo la salida de npm en general, estableciendo el nivel de registro
silent
en de dos formas:En cada
npm run
invocación:O globalmente creando un
.npmrc
archivo (este archivo puede estar en el directorio de su proyecto o en su carpeta de inicio) con lo siguiente:Recursos:
Configuración de nivel de registro npm: https://docs.npmjs.com/misc/config#loglevel
npmrc: https://docs.npmjs.com/misc/config#loglevel
Cada guión, individualmente:
Un truco simple que he usado para solucionar este problema en ciertos scripts como linting es agregarlos
|| true
al final de dichos scripts. Esto funcionará sin ningún cambio de configuración de npm.Esto asegurará que el script siempre saldrá con un
0
estado. Esto engaña a npm para que piense que el script tiene éxito y, por lo tanto, oculta losERR
mensajes. Si desea ser más explícito, puede agregar en su|| exit 0
lugar y debería lograr el mismo resultado.{ "scripts": { "lint": "jshint || true", } }
fuente
|| true
; esa no es una buena solución. No quiero silenciar TODOS los demás comandos que usan.npmrc
. Y ejecutar este script en particular-s
todo el tiempo también parece muy tonto. ¿Alguien encontró una mejor solución para silenciar un solo script?Debería poder utilizar las opciones
--quiet
y--silent
, como en--quiet
mostrará stderr y advertencias,--silent
debería suprimir casi todoTambién puede enviar stdout / stderr a
/dev/null
, así:npm install > "/dev/null" 2>&1
o menos versbose
npm install &> /dev/null
fuente
Mantendrá advertencias y errores, y suprimirá la barra de progreso de TDAH en terminales que lo admitan.
fuente
Puede hacer esto dentro de su secuencia de comandos eliminando los detectores de eventos
#!/usr/bin/env node process.removeAllListeners('warning'); // Do your thang without triggering warnings
fuente