按特定顺序依次运行Gulp任务

时间:2017-02-08 17:40:44

标签: javascript gulp

我需要运行一个包含3或4个其他任务的gulp任务。问题是(步骤):

  1. 在任务#1中,我需要从远程服务器下载文件
  2. 下载完成后,我需要运行任务#2
  3. 当任务#2完成后,我需要运行任务#3
  4. 这是我的代码:

    var gulp       = require('gulp'),
        decompress = require('gulp-decompress'),
        download   = require("gulp-download"),
        ftp        = require('gulp-ftp'),
        gutil      = require('gulp-util');
    
    gulp.task('default', function(){
        console.log("Hello gulp");
    });
    
    var src_download = [
        "https://wordpress.org/latest.zip"
    ];
    
    gulp.task('download', function(){
        download(src_download)
        .pipe(gulp.dest("./"));
    });
    
    gulp.task('unzip-wp', function(){
        return gulp.src('latest.zip')
        .pipe(decompress({strip: 1}))
        .pipe(gulp.dest('./'));
    });
    
    gulp.task('install', ['download', 'unzip-wp']);

    正如您所看到的,当我尝试运行'install'任务时 - 它将在'download'完成之前运行'unzip-wp'...

    我做错了什么?

    我只有在'下载'任务完成后才需要运行'unzip-wp'任务。

    由于

2 个答案:

答案 0 :(得分:3)

你应该拥有' unzip-wp'任务等待下载'完成任务。确保下载'任务真的完成了也为该任务添加了一个return语句,即这可以做你想要的:

var gulp = require('gulp'),
    decompress = require('gulp-decompress'),
    download = require("gulp-download"),
    ftp = require('gulp-ftp'),
    gutil = require('gulp-util');

gulp.task('default', function () {
    console.log("Hello gulp");
});

var src_download = [
    "https://wordpress.org/latest.zip"
];

gulp.task('download', function () {
    return download(src_download)
        .pipe(gulp.dest("./"));
});

gulp.task('unzip-wp', ['download'], function () {
    return gulp.src('latest.zip')
        .pipe(decompress({strip: 1}))
        .pipe(gulp.dest('./'));
});

gulp.task('install', ['unzip-wp']);

答案 1 :(得分:0)

非常简单,不需要解压缩任务,它也会解压缩到wordpress文件夹中,以免它弄乱你的其他文件。

gulp.task('download', function(){
    download(src_download)
    .pipe(decompress({strip: 1}))
    .pipe(gulp.dest('./wordpress'));
});


gulp.task('default', ['download']);