gulpイベントのstdoutへのconsole.log


87

gulpタスクが実行中または実行されたときに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年12月に、gulp-utilロギングを提供するモジュールは非推奨になりました。Gulpチームは、開発者がこの機能をfancy-logモジュールに置き換えることを推奨しました。この回答は、それを反映するように更新されました。)

fancy-log ロギングを提供し、元々はGulpチームによって作成されました。

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

ロギングを追加するために、GulpのAPIドキュメントには次のように記載されてい.srcます。

プラグインにパイプできるVinylファイルのストリームを返します。

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...') )
フランクノッケ2016

12
なぜツールが必要なのか、何か考えはありますか?なぜ機能しないのconsole.logですか?
Alex McMillan 2016

4
@AlexMcMillan.on('end', function(){ console.log('Almost there...'); })は私のために働きます。
デイビー2017年

3
@AlexMcMillanタイマーを取得できるように、ログの残りの部分と同じスタイルで出力をきれいに印刷します。
msanford 2017

3
本日(2017年12月)現在、gulp-util非推奨になっています:medium.com/gulpjs/gulp-util-ca3b1f9f9ac5
m90

15

(注意-2017年12月、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")何によって異なりますか?
フランクノッケ2016

3
私が理解しているように、そうでないかもしれないwritable.on('finish')ときに発砲しreadable.on('end')ます。この場合、正確なイベントは重要ではないかもしれません-私は有用な統計を記録することにもっと焦点を合わせました。
Trevedhek 2016

現在の(7.5.0)ドキュメントによると、'finish'および'end'イベントは、それぞれstream.Writableおよびstream.Readableクラスからのものです。」@FrankNocke
msanford 2017

gulp-util非推奨になりました。fancy-log代わりに使用してください
slajma

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.