gulp打包(压缩css,js,加md5码,图片压缩)

通配符路径匹配示例:

“src/a.js”:指定具体文件;

“*”:匹配所有文件    例:src/*.js(包含src下的所有js文件);

“**”:匹配0个或多个子文件夹    例:src/**/*.js(包含src的0个或多个子文件夹下的js文件);

“{}”:匹配多个属性    例:src/{a,b}.js(包含a.js和b.js文件)  src/*.{jpg,png,gif}(src下的所有jpg/png/gif文件);

“!”:排除文件    例:!src/a.js(不包含src下的a.js文件);

图片压缩

var imagemin = require('gulp-imagemin'),
    pngquant = require('imagemin-pngquant');

gulp.task('imagemin', function () {
    return gulp.src('src/asset/img/**/*') //需要压缩的图片
        .pipe(imagemin({
            progressive: true,
            use: [pngquant()]
        }))
        .pipe(gulp.dest('imagemin-dist'));//压缩后的图片所放的位置
});

 

压缩css js,添加对应md5

var minifyCss = require('gulp-minify-css');         //- 压缩CSS文件;
var uglify = require('gulp-uglify');                //- 压缩js代码
var rev = require('gulp-rev');                      //- 对css、js文件名加MD5后缀
 var revCollector = require('gulp-rev-collector'); //- 路径替换
*压缩js文件,并生成md5后缀的js文件*/
gulp.task('compress-js',function (callback) {       //- 创建一个名为compress-js的task
    pump([
        gulp.src(['jsbabel/**/*.js']),             //- 需要处理的js文件,放到一个字符串数组里
        uglify(),                             //- 压缩文件
        rev(),                                //- 文件名加MD5后缀
        gulp.dest('dist/asset/'),                 //- 另存压缩后的文件
        rev.manifest(),                       //- 生成一个rev-manifest.json
        gulp.dest('rev-js')                  //- 将rev-manifest.json保存到 rev-js 目录内
        .on('end',function () {
            console.log('compress-js has been completed');
        })
    ],callback)
});

/*压缩css文件,并生成md5后缀的css文件*/
gulp.task('compress-css', function(callback) {      //- 创建一个名为compress-css的task
    gulp.src(['src/css/**/*.css'])           //- 需要处理的css文件,放到一个字符串数组里
        .pipe(minifyCss())                          //- 压缩处理成一行
        .pipe(rev())                                //- 文件名加MD5后缀
        .pipe(gulp.dest('dist/css'))                //- 输出文件到dist/css目录下
        .pipe(rev.manifest())                       //- 生成一个rev-manifest.json
        .pipe(gulp.dest('rev-css'))                 //- 将rev-manifest.json保存到rev-css目录内
        .on('end',function () {
            console.log('compress-css has been completed');
            callback();
        });
});

/*修改html文件的link标签和script标签引用的css和js文件名,并把html文件输出到指定的位置*/
gulp.task('rev-html',['compress-css','compress-js'], function() {          //- compress-css和compress-js任务执行完毕再执行rev-index任务
    /*修改其它html文件的link标签和script标签引用的css和js文件名,并把html文件输出到指定的位置*/
    gulp.src(['rev-css/*.json','rev-js/*.json', './src/**/*.html'])     //- 读取两个rev-manifest.json文件以及需要进行css和js名替换的html文件
        .pipe(revCollector())                                                      //- 执行文件内css和js名的替换
        .pipe(gulp.dest('./dist'));                                            //- 替换后的html文件输出的目录
});

/*最终执行的任务-css*/
gulp.task('rev',['rev-html']);

babel  编译

var babel = require('gulp-babel')
var clean = require('gulp-clean');                  //- 用于删除文件
gulp.task('cleanbabel',function () {                     //删除dist目录下的所有文件
        gulp.src('jsbabel/js/*.js',{read:false})
        .pipe(clean());
        gulp.src('jsbabel/component/*.js',{read:false})
        .pipe(clean());
});

/* 编译es6-es5*/
gulp.task('babel',['cleanbabel'],function(){
    gulp.src('src/asset/**/*.js')
    .pipe(babel())
    .pipe(gulp.dest('jsbabel'))
    .on('end',function(){
        console.log('babel has been completed')
    })
})

  

移动图片到制定位置

// move
gulp.task('move', function() {
    return gulp.src(
        ['src/asset/img/**'], {
            base: './src/asset/'   //如果设置为 base: 'js' 将只会复制 js目录下文件, 其他文件会忽略
        }
    ).pipe(gulp.dest('dist/asset/'));
});

 
Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码

posted @ 2017-11-23 16:17  沙滩多啦图  阅读(282)  评论(0编辑  收藏  举报