1

リターンのないGulpタスクを持つことは可能ですか?

ユーザーに成功を通知する単純なビルド タスクを作成しようとしていますが、以前に作成した他のすべてのタスクは何かを返し、パイプを使用して関連するアクションを処理します。

以下のコードからわかるように、2 つの異なるビルド プロセスで実行したい一連のタスクがあります。devそしてproduction、両方の最後に、起動するだけの単純なprocess:buildタスクがあります。リロード タスクを実行し、 を使用して成功通知を送信しますgulp-notify

gulp次のコードを使用してコマンド ラインで実行すると、実際には何も壊れず、ビルド プロセスは問題なく進みますが、process:buildタスク自体は起動していないようです。

// Define our dependencies
var gulp = require('gulp'),
    del = require('del'),
    vinylPaths = require('vinyl-paths'),
    runSequence = require('run-sequence'),
    jpegtran = require('imagemin-jpegtran'),
    pngcrush = require('imagemin-pngcrush'),
    pngquant = require('imagemin-pngquant'),
    svgo = require('imagemin-svgo'),
    gulpLoadPlugins = require('gulp-load-plugins'),
    plugins = gulpLoadPlugins({ camelize: true });

//===============================================
// File specification
//===============================================

// Define the source and compliation paths for our files
var paths = {
    styles: {
        src: './inc/scss',
        files: './inc/scss/**.scss',
        dest: './public/inc/css'
    },
    images: {
        src: './inc/img',
        files: './inc/img/**.**',
        dest: './public/inc/img'
    }
};

//===============================================
// Error reporting
//===============================================

// Notify error
var onError = function (err) {
    plugins.util.beep();
    console.log(err);
    plugins.notify().write(err);
    this.emit('end');
};

//===============================================
// Compliation tasks
//===============================================

gulp.task('compile:scss', function() {
    return gulp.src(paths.styles.files)
        .pipe(plugins.plumber({
            errorHandler: onError
        }))
        .pipe(plugins.sourcemaps.init())
        .pipe(plugins.sass())
        .pipe(plugins.sourcemaps.write('/'))
        .pipe(gulp.dest(paths.styles.dest));
});

gulp.task('minify:css', function() {
  return gulp.src(['./public/inc/css/**.css', '!./public/inc/css/**.min.css'])
    .pipe(plugins.plumber({
        errorHandler: onError
    }))
    .pipe(plugins.cssmin())
    .pipe(plugins.rename({ suffix: '.min' }))
    .pipe(gulp.dest(paths.styles.dest));
});

gulp.task('compress:images', function() {
    return gulp.src(paths.images.files)
        .pipe(plugins.imagemin({
            progressive: true,
            interlaced: true,
            svgoPlugins: [{removeViewBox: false}],
            use: [
                jpegtran(),
                pngcrush(),
                pngquant(),
                svgo()
            ]
    }));
});

gulp.task('move:images', function() {
    return gulp.src(paths.images.files)
        .pipe(gulp.dest(paths.images.dest));
});

gulp.task('process:build', function() {
    plugins.livereload();
    plugins.notify({ message: "Build updated"});
});

//===============================================
// Sequenced tasks
//===============================================

// Run our sequenced tasks outlined above
gulp.task('dev', function(cb) {
    runSequence(
    'compile:scss',
    'move:images',
    'process:build', cb);
});

gulp.task('production', function(cb) {
    runSequence(
    'compile:scss',
    'minify:css',
    'compress:images',
    'move:images',
    'process:build', cb);
});

//===============================================
// Watch tasks
//===============================================

// Watch specified folders for changes
gulp.task('watch', function() {
    plugins.livereload.listen();

    var watcher = gulp.watch(['./inc/scss/**/**.scss', './inc/img/*.*'], ['dev']);

    watcher.on('change', function(event) {
        console.log(
            '[watcher] File ' + event.path.replace(/.*(?=sass)/,'') + ' was ' + event.type + ', compiling...'
        );
    });
});

//===============================================
// Tasks to use
//===============================================

// This is the default task - which is run when `gulp` is run
gulp.task('default', function(cb) {
    runSequence('dev', 'watch', cb);
});

gulp.task('production', function(cb) {
    runSequence('production', 'watch', cb);
});
4

0 に答える 0