1. ホーム
  2. javascript

[解決済み] gulpイベントでconsole.logをstdoutに出力する。

2023-03-29 16:17:15

質問

を実行したときに標準出力(設定環境)にログを残したいのですが。 ガルプ タスクが実行中または実行されたときに、(設定環境の)標準出力にログを記録したいです。

このようなものです。

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);
    });
});

どのイベントに反応すればいいのか、どこにリストがあるのかがわかりません。何かポインタがありますか?ありがとうございます。

どのように解決するのですか?

(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 イベントはプラグインが完了する (そしてそれ自身の出力をすべて送信する) 前に呼び出されるかもしれません。なぜなら、このイベントは "すべてのデータが基礎となるシステムにフラッシュされたときに呼び出されるからです" 。