gulp dest 方法无法写入内容

使用gulp-minify-css执行css 压缩时, gulp.dest 不能在直接将原有文件替换成压缩文件?

下面这段代码不能得到压缩版本的css文件

gulp.task('rev', function(){
    var cssPath = '/home/me/project/resource/**/*.css',
        jsPath = '/home/me/project/resource/**/*.js',
        imgPath = '/home/me/project/resource/**/*.png',
        htmlPath = '/home/me/project/templates/**/*.html',
        resourceDir = '/home/me/release/project/resource',
        templateDir = '/home/me/release/project/resource';

    gulp.src([cssPath, jsPath, imgPath])
        .pipe(rev())
        .pipe(gulp.dest(resourceDir));

    gulp.src(originalHtml)
        .pipe(rev())
        .pipe(gulp.dest(templateDir))
});

gulp.task('cssmin', ['rev'], function(){
    var cssPath = '/home/me/release/project/resource/**/*.css',
        cssDir = '/home/me/release/project/resource';
    gulp.src(cssPath)
        .pipe(minifyCss())
        .pipe(gulp.dest(cssDir));
});

更改dest的文件路径后,可以得到压缩版本的css文件

gulp.task('cssmin', ['rev'], function(){
    var cssPath = '/home/me/release/project/resource/**/*.css',
        otherDir = '/home/me/release/project/static/temp'; // 其他路劲
    gulp.src(cssPath)
        .pipe(minifyCss())
        .pipe(gulp.dest(otherDir));
});

去掉rev任务依赖,直接执行,也可以在cssDir下获得压缩文件

本人初学gulp, 望大神指点。

阅读 4.4k
1 个回答

把代码改成如下就可以了:

var cssPath = '/home/me/project/resource/**/*.css',
    jsPath = '/home/me/project/resource/**/*.js',
    imgPath = '/home/me/project/resource/**/*.png',
    htmlPath = '/home/me/project/templates/**/*.html',
    resourceDir = '/home/me/release/project/resource',
    templateDir = '/home/me/release/project/resource';

gulp.task('rev:static', function(){
    return gulp.src([cssPath, jsPath, imgPath])
        .pipe(rev())
        .pipe(gulp.dest(resourceDir));
}); 

gulp.task('rev:html', function(){
    return gulp.src(originalHtml)
        .pipe(rev())
        .pipe(gulp.dest(templateDir))
});

gulp.task('cssmin', ['rev:static', 'rev:html'], function(){
    var cssPath = '/home/me/release/project/resource/**/*.css',
        cssDir = '/home/me/release/project/resource';
    gulp.src(cssPath)
        .pipe(minifyCss())
        .pipe(gulp.dest(cssDir));
});

原因:被依赖的task要在该task执行之前完成,被依赖的task必须:accept a callback、return a stream or return a promise. 看官方文档: Gulp api

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题