console.log для випуску подій залпом


87

Я хочу увійти в 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повертає:

Повертає потік файлів вінілу, які можна передавати до плагінів.

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...'); })працює для мене.
Дейві,

3
@AlexMcMillan Він просто друкує вихідні дані в тому ж стилі, що й решта журналу, щоб отримати таймери.
Мсанфорд,

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")відрізняються?
Frank Nocke

3
Як я розумію, writable.on('finish')стрілятимуть тоді, коли readable.on('end')можуть ні. Точна подія в цьому випадку може не мати значення - я більше зосереджувався на реєстрації корисної статистики.
Треведхек

Відповідно до поточної документації (7.5.0): "Події 'finish'та 'end'події належать до класів stream.Writableі stream.Readable, відповідно". @FrankNocke
msanford

gulp-utilбуло припинено, використовуйте fancy-logзамість цього
slajma

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.