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 -->