在preios任务之后如何部署gulp-ftp?

时间:2018-02-12 11:36:56

标签: node.js npm gulp npm-scripts

我在npm.js中有两个gulp任务有问题。第一个任务编译项目,接下来将其部署在ftp上。如果我单独运行 - 所有工作,但当我尝试一起使用它时,它现在工作。我认为它是一个流错误。 Cuz gulp ftp(第二项任务)完成得更快(第一项任务)。有人可以帮忙吗?

第一项任务:

gulp.task('build', ['nib', 'html', 'scripts'], function() {
    var removeDist = del.sync('app/dist');

    var buildCSS = gulp
        .src('app/chache/css/*.css')
        .pipe(cssnano())
        .pipe(gulp.dest('app/dist/css'));

    var buildImg = gulp
        .src(['app/html-dev/img/**/*', '!app/html-dev/img/empty.jpg'])
        .pipe(imagemin({
            interlaced: true,
            progressive: true,
            svgoPlugins: [{ removeViewBox: false }],
            une: [pngquant()]
        }))
        .pipe(gulp.dest('app/dist/img'));

    var buildFonts = gulp
        .src(["app/html-dev/fonts/**/*", '!app/html-dev/fonts/empty.woff'])
        .pipe(gulp.dest('app/dist/fonts'));

    var buildJS = gulp
        .src("app/chache/js/**/*")
        .pipe(gulp.dest('app/dist/js'));

    var buildHhtml = gulp
        .src("app/chache/*.html")
        .pipe(gulp.dest('app/dist'));
});

Ftp任务:

gulp.task('ftp', ['build'], function () {
    return gulp.src('app/dist/**')
        .pipe(ftp(ftpinfo))
        // you need to have some kind of stream after gulp-ftp to make sure it's flushed 
        // this can be a gulp plugin, gulp.dest, or any kind of stream 
        // here we use a passthrough stream 
        .pipe(gutil.noop());
});

错误:

[13:34:47] Using gulpfile ~\Desktop\test-dist\gulpfile.js
[13:34:47] Starting 'nib'...
[13:34:47] Starting 'html'...
[13:34:47] Starting 'scripts'...
[13:34:47] Finished 'scripts' after 9.31 ms
[13:34:50] Finished 'nib' after 3.35 s
[13:34:50] Finished 'html' after 3.34 s
[13:34:50] Starting 'build'...
[13:34:50] Finished 'build' after 21 ms
[13:34:50] Starting 'ftp'...
[13:34:50] gulp-ftp: No files uploaded
[13:34:50] Finished 'ftp' after 6.5 ms
[13:34:50] gulp-imagemin: Minified 0 images

1 个答案:

答案 0 :(得分:0)

您需要return来自依赖任务'build'的流。否则,父任务'ftp'不会等待'build'结束。

由于该任务有多个src,您需要将它们与merge-stream

合并
var merge = require('merge-stream');

gulp.task('build', ['nib', 'html', 'scripts'], function() {
    var removeDist = del.sync('app/dist');

    return merge(
    gulp
        .src('app/chache/css/*.css')
        .pipe(cssnano())
        .pipe(gulp.dest('app/dist/css')),

    gulp
        .src(['app/html-dev/img/**/*', '!app/html-dev/img/empty.jpg'])
        .pipe(imagemin({
            interlaced: true,
            progressive: true,
            svgoPlugins: [{ removeViewBox: false }],
            une: [pngquant()]
        }))
        .pipe(gulp.dest('app/dist/img')),

    gulp
        .src(["app/html-dev/fonts/**/*", '!app/html-dev/fonts/empty.woff'])
        .pipe(gulp.dest('app/dist/fonts')),

    gulp
        .src("app/chache/js/**/*")
        .pipe(gulp.dest('app/dist/js')),

    gulp
        .src("app/chache/*.html")
        .pipe(gulp.dest('app/dist'))
    );

});