Zdecydowałem się poeksperymentować ze skryptami npm jako narzędziem do budowania i póki co mi się podoba. Jednym z problemów, które chciałbym rozwiązać, jest to, że podczas uruchamiania skryptu uruchamiającego jshint, gdy coś nie przechodzi lintingu, otrzymuję mnóstwo komunikatów „npm ERR!” linie. Chciałbym je wyeliminować, ponieważ dane wyjściowe z lintera są bardziej znaczące.
Czy istnieje dobry sposób, aby ustawić to globalnie i czy istnieje sposób, aby ustawić to dla każdego uruchomienia skryptu?
Odpowiedzi:
Wszystkie skrypty:
Możesz to naprawić, wyłączając generalnie wyjście npm, ustawiając poziom dziennika na
silent
na kilka sposobów:Przy każdym
npm run
wywołaniu:Lub globalnie, tworząc
.npmrc
plik (ten plik może znajdować się w katalogu projektu lub w katalogu domowym) z następującymi elementami:Zasoby:
Konfiguracja na poziomie dziennika npm: https://docs.npmjs.com/misc/config#loglevel
npmrc: https://docs.npmjs.com/misc/config#loglevel
Każdy scenariusz indywidualnie:
Prostą sztuczką, której użyłem, aby obejść ten problem w niektórych skryptach, takich jak linting, jest dołączenie
|| true
na końcu takich skryptów. To zadziała bez żadnych zmian w konfiguracji npm.Zapewni to, że skrypt zawsze zakończy pracę ze
0
statusem. To nakłania npm do myślenia, że skrypt się powiódł, a tym samym ukrywaERR
wiadomości. Jeśli chcesz być bardziej wyraźny, możesz|| exit 0
zamiast tego dołączyć i powinno to osiągnąć ten sam wynik.{ "scripts": { "lint": "jshint || true", } }
źródło
|| true
; to nie jest dobre rozwiązanie. Nie chcę wyciszać WSZYSTKICH innych poleceń używających.npmrc
. Uruchamianie tego konkretnego skryptu przez-s
cały czas również wydaje się bardzo głupie. Czy ktoś znalazł lepsze rozwiązanie na wyciszenie pojedynczego skryptu?Powinieneś móc używać obu opcji
--quiet
i--silent
, jak w--quiet
pokaże stderr i ostrzeżenia,--silent
powinien wyłączyć prawie wszystkoMożesz również wysłać stdout / stderr do
/dev/null
, na przykład:npm install > "/dev/null" 2>&1
lub mniej versbose
npm install &> /dev/null
źródło
Zachowa ostrzeżenia i błędy oraz pominie pasek postępu ADHD na terminalach, które go obsługują.
źródło
Możesz to zrobić wewnątrz skryptu, usuwając detektory zdarzeń
#!/usr/bin/env node process.removeAllListeners('warning'); // Do your thang without triggering warnings
źródło