console.log เพื่อ stdout เกี่ยวกับเหตุการณ์อึก


86

ฉันต้องการเข้าสู่ stdout (สภาพแวดล้อมการกำหนดค่า) เมื่องานอึกกำลังทำงานอยู่หรือมีการรัน

สิ่งนี้:

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โมดูลซึ่งให้การบันทึกได้เลิกใช้งานแล้วทีมงาน Gulp แนะนำให้นักพัฒนาแทนที่ฟังก์ชันนี้ด้วยfancy-logโมดูลคำตอบนี้ได้รับการอัปเดตเพื่อให้สอดคล้องกับสิ่งนั้น)

fancy-log ให้การบันทึกและสร้างขึ้นโดยทีมงาน Gulp

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

หากต้องการเพิ่มการบันทึกเอกสาร API ของ Gulpบอกเราว่า.srcส่งคืน:

ส่งคืนสตรีมของไฟล์ Vinyl ที่สามารถส่งไปยังปลั๊กอินได้

Streamเอกสารของ Node.js ระบุรายการเหตุการณ์ รวมกันนี่คือตัวอย่าง:

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...') )
Frank Nocke

12
มีความคิดว่าทำไมต้องใช้เครื่องมือเลย? ทำไมไม่console.logทำงาน
Alex McMillan

4
@AlexMcMillan .on('end', function(){ console.log('Almost there...'); })ทำงานให้ฉัน
Davey

3
@AlexMcMillan มันแค่พิมพ์ผลลัพธ์ในสไตล์เดียวกับส่วนที่เหลือของบันทึกเพื่อให้คุณได้ตัวจับเวลา
msanford

3
ณ วันนี้ (ธันวาคม 2017) gulp-utilเลิกใช้แล้ว: medium.com/gulpjs/gulp-util-ca3b1f9f9ac5
m90

14

(โปรดทราบ - ในเดือนธันวาคม 2017 gulp-utilโมดูลได้เลิกใช้งานแล้ว)

เพื่อสร้างคำตอบโดยJacob Budinฉันเพิ่งลองใช้สิ่งนี้และพบว่ามีประโยชน์

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")แตกต่างกันอย่างไร
Frank Nocke

3
ตามที่ฉันเข้าใจมันwritable.on('finish')จะยิงเมื่อreadable.on('end')ไม่อาจ เหตุการณ์ที่แน่นอนอาจไม่สำคัญในกรณีนี้ - ฉันมุ่งเน้นไปที่การบันทึกสถิติที่มีประโยชน์มากกว่า
Trevedhek

เป็นต่อ (7.5.0) เอกสารปัจจุบัน: "การ'finish'และ'end'เหตุการณ์ที่เกิดขึ้นมาจากstream.Writableการstream.Readableเรียนตามลำดับ." @FrankNocke
msanford

gulp-utilเลิกใช้แล้วให้ใช้fancy-logแทน
slajma

2

gulp.utilถูกเลิกใช้งานอย่างน่าเศร้า ใช้fancy-logแทน: https://www.npmjs.com/package/fancy-log

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.