gulp使用

gulp需要全局安装和当前目录都安装才能使用gulp命令

安装gulp插件

npm install gulp-rev gulp-rev-replace gulp-useref gulp-filter gulp-uglify gulp-csso --save-dev

gulp-rev:给每个文件添加版本号,根据文件内容计算hash码,修改文件名,避免客户端缓存问题

gulp-rev-replace:更新index中的引用

gulp-useref:通过注释合并js、css文件

gulp-filter:将stream里的文件根据一定的规则进行筛选过滤

gulp-uglify:压缩js

gulp-csso:压缩css

//声明依赖包
var gulp = require('gulp');
var rev = require('gulp-rev');
var revReplace = require('gulp-rev-replace');
var useref = require('gulp-useref');
var filter = require('gulp-filter');
var uglify = require('gulp-uglify');
var csso = require('gulp-csso')

gulp.task("default",function () {
  //定义过滤规则,!index.html指忽略此文件,index.html不用加版本号
    var jsFilter = filter('**/*.js',{restore: true});
    var cssFilter = filter('**/*.css',{restore: true});
    var indexHtmlFilter = filter(['**/*','!index.html'],{restore: true})

    return gulp.src('index.html')  //找到index.html文件进行处理
        .pipe(useref())       //通过useref插件分析index中带有注释的css和js文件,放入流中,此时流中包含index、css、js文件
        .pipe(jsFilter)       //筛选js文件
        .pipe(uglify())       //压缩
        .pipe(jsFilter.restore)    //js文件返回流
        .pipe(cssFilter)           //筛选css文件
        .pipe(csso())              //压缩
        .pipe(cssFilter.restore)   //css文件返回流
        .pipe(indexHtmlFilter)     //筛选所有文件,排除index.html
        .pipe(rev())         //生成hash版本号文件名
        .pipe(indexHtmlFilter.restore) //文件返回流
        .pipe(revReplace())        //更新index.html中对css、js的引用 
        .pipe(gulp.dest('dist'));  //将文件流放入dist目录
})

使用/*! ... */的注释不会被压缩,如果你的版权声明不想被压缩可以使用/*! ... */注释。

css注释

<!-- build:css css/combined.css -->
<link>
<!-- endbuild -->

javascript注释

<!-- build:js js/combined.js -->
<script></script>
<!-- endbuild -->

 

posted @ 2017-01-20 11:40  tgxh  阅读(252)  评论(0编辑  收藏  举报