एनपीएम स्क्रिप्ट चलाते समय आउटपुट को कैसे दबाएं


97

मैंने एक निर्माण उपकरण के रूप में npm स्क्रिप्ट के साथ प्रयोग करने का फैसला किया है और अब तक मुझे यह पसंद है। एक मुद्दा जिसे मैं हल करना चाहता हूं, वह है जब स्क्रिप्ट को चलाने के लिए jshint चलाने के लिए जब कुछ लाइनिंग पास नहीं करता है तो मुझे "एनपीएम ईआरआरआर" का एक टन मिलता है! लाइनों। मैं इन्हें दबाना चाहूंगा क्योंकि लिंटर से आउटपुट अधिक सार्थक है।

क्या यह विश्व स्तर पर स्थापित करने का एक अच्छा तरीका है और क्या प्रत्येक स्क्रिप्ट चलाने के लिए इसे सेट करने का कोई तरीका है?

node.js  npm 

Npm

इस विषय पर एक समस्या है: github.com/npm/npm/issues/6124
daotoad

जवाबों:


167

सभी स्क्रिप्ट:

आप एनपीएम के आउटपुट को समग्र रूप से दबाकर ठीक कर सकते हैं, लॉग स्तर को silentकुछ तरीकों से सेट करके :

प्रत्येक npm runआह्वान पर:

npm run --silent <your-script>

या .npmrcफ़ाइल बनाकर विश्व स्तर पर (यह फ़ाइल या तो आपके प्रोजेक्ट डायरेक्टरी या आपके होम फ़ोल्डर में हो सकती है) निम्नलिखित के साथ:

loglevel=silent

संसाधन:

एनपीएम लॉग स्तर विन्यास: https://docs.npmjs.com/misc/config#loglevel

npmrc: https://docs.npmjs.com/misc/config#loglevel

प्रत्येक स्क्रिप्ट, व्यक्तिगत रूप से:

एक सरल ट्रिक जो मैंने इस मुद्दे के इर्द-गिर्द पाने के लिए इस्तेमाल || trueकी है, जैसे कि स्क्रिप्टिंग के अंत में इस तरह की लिपियों को खत्म करना। यह बिना किसी npm विन्यास परिवर्तन के काम करेगा।

यह सुनिश्चित करेगा कि स्क्रिप्ट हमेशा एक 0स्थिति से बाहर निकलेगी। यह स्क्रिप्ट को सफल बनाने में npm की चाल है, इसलिए ERRसंदेशों को छिपा रहा है । यदि आप अधिक स्पष्ट होना चाहते हैं, तो आप || exit 0इसके बजाय आगे बढ़ सकते हैं और इसे उसी परिणाम को प्राप्त करना चाहिए।

{
  "scripts": {
    "lint": "jshint || true",
   }
}

|| अगर आप एनपीएम रन के अंत में आर्ग को जोड़ने की कोशिश कर रहे हैं तो सच्चा काम नहीं करता है - जैसे। npm रन myCmd - --eploy
arcseldon

4
यह वास्तव में काफी बेतुका है (आपको दोष नहीं दे रहा है)। मैं जोड़ना नहीं चाहता || true; यह एक अच्छा समाधान नहीं है। मैं अन्य सभी आदेशों का उपयोग नहीं करना चाहता .npmrc। और -sहर समय इस विशेष स्क्रिप्ट को चलाना भी बहुत मूर्खतापूर्ण लगता है। किसी को भी एक स्क्रिप्ट पटकथा के लिए एक बेहतर समाधान मिल गया?
पास्कलवीकूटन

यदि कोई अन्य व्यक्ति इस पार आता है, तो एक खुला मुद्दा है - github.com/npm/npm/issues/8821 देखें ।
इयान रूटलेज

loglevel = मूक मुझे ओवरकिल लगता है। यह भी त्रुटि संदेश चुप्पी होगा (हालांकि वे अभी भी एक स्थानीय फ़ाइल के लिए लिखा जाएगा)। इस सुझाव के तुरंत बाद की कड़ी के अनुसार, प्राथमिकता क्रम में संभावित लॉग स्तर हैं: "चुप", "त्रुटि", "चेतावनी", "नोटिस", "http", "समय", "जानकारी", "क्रिया" "," मूर्खतापूर्ण "। मैं या तो "त्रुटि" (जो चेतावनी को दबाऊंगा, लेकिन त्रुटियों को प्रदर्शित करूंगा) या "चेतावनी" (जिसमें चेतावनी शामिल होगी) का सुझाव दूंगा। आमतौर पर npm के लिए कोई कारण नहीं है हमें यह दिखाने के लिए कि यह कैसे तय करता है कि क्या चलना है, जो यह डिफ़ॉल्ट रूप से करता है। पाठ डिबगिंग की तरह लगता है।
जॉन दीघन

ठीक है, मुझे अपने आप को ठीक करने की जरूरत है, और आपत्ति उठानी होगी। शायद यह भी एक नोड है। बग बग? जब मैंने 'loglevel = त्रुटि' के साथ एक .npmrc फ़ाइल बनाई, तो 'npm परीक्षण' चलाने के बाद भी npm के तर्क के माध्यम से पता लगाया कि यह कैसे निर्धारित करता है कि किस कमांड लाइन को चलाना है। नोड संस्करण 8.12.0, एनपीएम संस्करण 5.8.0।
जॉन दीघन

45

जैसा कि आप दोनों विकल्पों --quietऔर --silentविकल्पों का उपयोग करने में सक्षम होना चाहिए

npm install --quiet

--quietstderr और चेतावनियाँ दिखाएंगे, --silentलगभग हर चीज़ को दबा देना चाहिए

आप stdout / stderr को भी भेज सकते हैं /dev/null, जैसे:

npm install > "/dev/null" 2>&1

या कम छंद

npm install &> /dev/null

7
विंडोज में, यह npm install है --quiet> NUL
मनोहर रेड्डी पोरेड्डी

4
यह प्रश्न विशेष रूप से npm स्क्रिप्ट चलाने के बारे में है ।
२०:४१

--quietnpm स्क्रिप्ट के लिए काम करता है;) @ हेकेल
IG पास्कल

8
npm install --quiet --no-progress 

चेतावनियों और त्रुटियों को रखेंगे, और एडीएचडी प्रगति पट्टी को दबाने वाले टर्मिनलों पर दबाएंगे।


3
यह प्रश्न विशेष रूप से npm स्क्रिप्ट चलाने के बारे में है ।
२०:४१

0

आप इवेंट श्रोताओं को हटाकर अपनी स्क्रिप्ट के अंदर ऐसा कर सकते हैं

#!/usr/bin/env node

process.removeAllListeners('warning');

// Do your thang without triggering warnings

-1

एक व्यक्तिगत स्क्रिप्ट के लिए जिसे आप --silentहर बार जोड़ने के बिना चुप रहना चाहते हैं , आप एक नई स्क्रिप्ट बना सकते हैं जो आपके पिछले एक को कॉल करता है और जोड़ता है --silent

पैकेज में मेरी उदाहरण लिपियाँ। json:

    "dev-loud": "npm run build && nodemon -r dotenv/config dist/index.js",
    "dev": "npm run dev-loud --silent"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.