Decidi experimentar scripts npm como uma ferramenta de construção e até agora gosto disso. Um problema que eu gostaria de resolver é ao executar um script para executar jshint quando algo não passa linting, recebo uma tonelada de "npm ERR!" linhas. Eu gostaria de suprimir isso, pois a saída do linter é mais significativa.
Existe uma boa maneira de definir isso globalmente e há uma maneira de defini-lo para cada execução de script?
Respostas:
Todos os scripts:
Você pode corrigir isso suprimindo a saída de npm geral, definindo o nível de registro de
silent
algumas maneiras:Em cada
npm run
invocação:Ou globalmente, criando um
.npmrc
arquivo (esse arquivo pode estar no diretório do seu projeto ou na sua pasta inicial) com o seguinte:Recursos:
Configuração de nível de registro npm: https://docs.npmjs.com/misc/config#loglevel
npmrc: https://docs.npmjs.com/misc/config#loglevel
Cada script, individualmente:
Um truque simples que usei para contornar esse problema em certos scripts, como linting, é anexar
|| true
no final desses scripts. Isso funcionará sem quaisquer alterações de configuração do npm.Isso garantirá que o script sempre saia com um
0
status. Isso leva o npm a pensar que o script foi bem-sucedido, ocultando asERR
mensagens. Se você quiser ser mais explícito, pode acrescentar em|| exit 0
vez disso e deve obter o mesmo resultado.{ "scripts": { "lint": "jshint || true", } }
fonte
|| true
; essa não é uma boa solução. Não quero silenciar TODOS os outros comandos usando.npmrc
. E executar esse script em particular-s
o tempo todo também parece muito bobo. Alguém encontrou uma solução melhor para silenciar um único script?Você deve ser capaz de usar as opções
--quiet
e--silent
, como em--quiet
irá mostrar stderr e avisos,--silent
deve suprimir quase tudoVocê também pode enviar stdout / stderr para
/dev/null
, assim:npm install > "/dev/null" 2>&1
ou menos versbose
npm install &> /dev/null
fonte
--quiet
funciona para scripts npm;) @hackelManterá avisos e erros e suprimirá a barra de progresso do TDAH nos terminais que o suportam.
fonte
Você pode fazer isso dentro do seu script, removendo os ouvintes de evento
#!/usr/bin/env node process.removeAllListeners('warning'); // Do your thang without triggering warnings
fonte
para um script individual que você deseja manter em silêncio sem ter que adicionar a
--silent
cada vez, você pode fazer um novo script que chama o anterior e adiciona--silent
.Meus scripts de exemplo em package.json:
"dev-loud": "npm run build && nodemon -r dotenv/config dist/index.js", "dev": "npm run dev-loud --silent"
fonte