कंसोल। gulp घटनाओं पर stdout करने के लिए


87

जब कोई gulp कार्य चल रहा हो या चला हो, तो मैं stdout (config वातावरण) में लॉग इन करना चाहता हूं ।

कुछ इस तरह:

gulp.task('scripts', function () {
  var enviroment = argv.env || 'development';
  var config = gulp.src('config/' + enviroment + '.json')
      .pipe(ngConstant({name: 'app.config'}));
  var scripts = gulp.src('js/*');

  return es.merge(config, scripts)
    .pipe(concat('app.js'))
    .pipe(gulp.dest('app/dist'))
    .on('success', function() { 
      console.log('Configured environment: ' + environment);
    });
});

मुझे यकीन नहीं है कि मुझे कौन सी घटना का जवाब देना चाहिए या इनमें से एक सूची कहां मिलनी चाहिए। कोई संकेत? बहुत धन्यवाद।

जवाबों:


170

(दिसंबर 2017 में, gulp-utilमॉड्यूल, जो लॉगिंग प्रदान करता था , पदावनत कर दिया गया था । गल्प टीम ने सिफारिश की थी कि डेवलपर्स इसे fancy-logमॉड्यूल से बदल दें। इस उत्तर को प्रतिबिंबित करने के लिए अपडेट किया गया है।)

fancy-log लॉगिंग प्रदान करता है और मूल रूप से गुल्प टीम द्वारा बनाया गया था।

var log = require('fancy-log');
log('Hello world!');

लॉगिंग जोड़ने के लिए, गुलप के एपीआई प्रलेखन हमें बताते हैं कि .srcरिटर्न:

विनील फ़ाइलों की एक स्ट्रीम लौटाता है जिसे प्लगइन्स में पाइप किया जा सकता है।

Node.js का Streamदस्तावेज़ घटनाओं की एक सूची प्रदान करता है। एक साथ रखें, यहाँ एक उदाहरण है:

gulp.task('default', function() {
    return gulp.src('main.scss')
        .pipe(sass({ style: 'expanded' }))
        .on('end', function(){ log('Almost there...'); })
        .pipe(minifycss())
        .pipe(gulp.dest('.'))
        .on('end', function(){ log('Done!'); });
});

नोट: endईवेंट को प्लगइन पूरा होने से पहले बुलाया जा सकता है (और अपने सभी आउटपुट भेजे गए हैं), क्योंकि इवेंट को "सभी डेटा को अंतर्निहित सिस्टम में फ़्लश किया गया" कहा जाता है।


2
.on('end', () => gutil.log('ES6 arrow syntax for simplicity...') )
फ्रैंक नॉक

12
किसी भी विचार क्यों एक उपकरण की आवश्यकता है? console.logकाम क्यों नहीं करता?
एलेक्स मैकमिलन

4
@AlexMcMillan .on('end', function(){ console.log('Almost there...'); })मेरे लिए काम करता है।
डेवी

3
@AlexMcMillan यह केवल बाकी लॉग के रूप में उसी शैली में आउटपुट प्रिंट करता है जिससे आपको टाइमर मिलते हैं।
msanford

3
आज (दिसंबर २०१ 2017) तक, gulp-utilपदावनत कर दिया गया है: medium.com/gulpjs/gulp-util-ca3b1f9f9ac5
m90

15

(कृपया ध्यान दें - दिसंबर 2017 में, gulp-utilमॉड्यूल को हटा दिया गया था।)

जैकब बुडिन के जवाब पर निर्माण करने के लिए , मैंने हाल ही में यह कोशिश की और इसे उपयोगी पाया।

var gulp = require("gulp");
var util = require("gulp-util");
var changed = require("gulp-changed");

gulp.task("copyIfChanged", function() {
    var nSrc=0, nDes=0, dest="build/js";
    gulp.src("app/**/*.js")
    .on("data", function() { nSrc+=1;})
    .pipe(changed(dest)) //filter out src files not newer than dest
    .pipe(gulp.dest(dest))
    .on("data", function() { nDes+=1;})
    .on("finish", function() {
        util.log("Results for app/**/*.js");
        util.log("# src files: ", nSrc);
        util.log("# dest files:", nDes);
    });
}

.on("end")और .on("finish")क्या अलग है?
फ्रैंक नॉक

3
जैसा कि मैं इसे समझता हूं, writable.on('finish')जब readable.on('end')नहीं होगा तो आग लगाएगा । इस घटना में सटीक घटना नहीं हो सकती है - मैं उपयोगी आंकड़ों को लॉग करने पर अधिक केंद्रित था।
त्रेवेदेख

वर्तमान (7.5.0) प्रलेखन के अनुसार: " 'finish'और 'end'घटनाएं क्रमशः stream.Writableऔर stream.Readableकक्षाओं से होती हैं।" @FrankNocke
msanford

gulp-utilपदावनत किया गया है, fancy-logइसके बजाय का उपयोग करें
slajma

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.