gulp-merge合并多任务

日常开发中,经常会需要用到单个未经过合并的js文件或者css文件另做他用,这时候,统一合并js和css就不合适了!

直接上代码

var gulp = require('gulp'),
    rev = require('gulp-rev'),
    gulpMerge = require('gulp-merge');
    
gulp.task('dev-app',function() {
    var apptool = gulp.src(appjsSrc).pipe(concat('apptool.js'));
    return gulpMerge(gulpMerge(
        gulp.src(['src/js/apporder.js','src/js/appsale.js']),
        gulp.src(appCssSrc)
            .pipe(concat('appcss.css'))
    ),apptool)
    .pipe(rev())
    .pipe(gulp.dest('dev/app'))
    .pipe(rev.manifest('rev-app.json',{publicPath:'app/'}))
    .pipe(gulp.dest('dev/version'));
});

这里做一下备注

  1. appjsSrc和appCssSrc分别为js和css的相对路径(需要用到的js和css)。
  2. gulp-merge合并两个任务,超出两个之后的解析不出来,这里需要研究一下源码。
  3. gulp-rev做了修改,因为源码中没有==publicPath==这个变量,所以需要作出修改,作用为给生成的json文件的key值加上路径,可以用在CDN上面,下面贴出修改的源码部分。
  4. 合并所有的任务以后,把合并后的文件和匹配到的文件命名为带hash的文件名

修改的gulp-rev的源码部分

//gulp-rev下面的index.js
opts = objectAssign({
    path: 'rev-manifest.json',
    merge: false,
    // Apply the default JSON transformer.
    // The user can pass in his on transformer if he wants. The only requirement is that it should
    // support 'parse' and 'stringify' methods.
    transformer: JSON
}, opts, pth);
//修改为
opts = objectAssign({
    path: 'rev-manifest.json',
    merge: false,
    // Apply the default JSON transformer.
    // The user can pass in his on transformer if he wants. The only requirement is that it should
    // support 'parse' and 'stringify' methods.
    transformer: JSON,
    publicPath:''
}, opts, pth);

manifest[originalFile] = revisionedFile;
//修改为
manifest[originalFile] = opts.publicPath+revisionedFile;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容