Saya telah memutuskan untuk bereksperimen dengan skrip npm sebagai alat pembuatan dan sejauh ini saya menyukainya. Satu masalah yang ingin saya selesaikan adalah saat menjalankan skrip untuk menjalankan jshint ketika sesuatu tidak lolos linting, saya mendapatkan banyak sekali "npm ERR!" garis. Saya ingin menyembunyikannya karena keluaran dari linter lebih bermakna.
Adakah cara yang baik untuk menyetelnya secara global dan adakah cara untuk menyetelnya untuk setiap skrip yang dijalankan?
Jawaban:
Semua skrip:
Anda dapat memperbaikinya dengan menekan keluaran npm secara keseluruhan, dengan menyetel level log ke
silent
dalam beberapa cara:Di setiap
npm run
doa:Atau secara global dengan membuat
.npmrc
file (file ini bisa di direktori proyek atau folder utama Anda) dengan berikut ini:Sumber:
konfigurasi tingkat log npm: https://docs.npmjs.com/misc/config#loglevel
npmrc: https://docs.npmjs.com/misc/config#loglevel
Setiap skrip, satu per satu:
Trik sederhana yang saya gunakan untuk mengatasi masalah ini pada skrip tertentu seperti linting adalah dengan menambahkan
|| true
di akhir skrip tersebut. Ini akan bekerja tanpa perubahan konfigurasi npm.Ini akan memastikan bahwa skrip akan selalu keluar dengan
0
status. Ini menipu npm untuk berpikir bahwa skrip berhasil, sehingga menyembunyikanERR
pesan. Jika Anda ingin lebih eksplisit, Anda dapat menambahkan|| exit 0
sebagai gantinya dan itu akan mencapai hasil yang sama.{ "scripts": { "lint": "jshint || true", } }
sumber
|| true
; itu bukan solusi yang bagus. Saya tidak ingin membungkam SEMUA perintah lain menggunakan.npmrc
. Dan menjalankan skrip khusus ini-s
sepanjang waktu juga tampak sangat konyol. Adakah yang menemukan solusi yang lebih baik untuk membungkam satu skrip?Anda harus dapat menggunakan opsi
--quiet
dan--silent
, seperti pada--quiet
akan menampilkan stderr dan peringatan,--silent
harus menyembunyikan hampir semuanyaAnda juga dapat mengirim stdout / stderr ke
/dev/null
, seperti:npm install > "/dev/null" 2>&1
atau kurang versbose
npm install &> /dev/null
sumber
Akan menyimpan peringatan dan kesalahan, dan menekan bilah kemajuan ADHD pada terminal yang mendukungnya.
sumber
Anda dapat melakukan ini di dalam skrip Anda dengan menghapus event listener
#!/usr/bin/env node process.removeAllListeners('warning'); // Do your thang without triggering warnings
sumber
untuk setiap skrip yang ingin Anda diam tanpa harus menambahkan
--silent
setiap kali, Anda dapat membuat skrip baru yang memanggil skrip sebelumnya dan menambahkan--silent
.Skrip contoh saya di package.json:
"dev-loud": "npm run build && nodemon -r dotenv/config dist/index.js", "dev": "npm run dev-loud --silent"
sumber