var gulp = require('gulp');
var clean = require('gulp-clean');
var concat = require('gulp-concat');
//var jade = require('gulp-jade'); //暂时不需要
//var sass = require('gulp-sass'); //可以为sass、less、scss
var util = require('gulp-util'); //输入提示,日志
var notify = require('gulp-notify'); //系统提示
var browserSync = require('browser-sync');// 浏览器异步处理
var reload = browserSync.reload;
var runSequence = require('run-sequence'); //执行顺序
var uglify = require('gulp-uglify'); //专门压缩js
var cleanCSS = require('gulp-clean-css'); //css压缩
var htmlmin = require('gulp-htmlmin'); //html压缩
//var assetRev = require('gulp-asset-rev'); //加版本号
var rev = require('gulp-rev'); //版本管理
var revCollector = require('gulp-rev-collector'); //版本管理
var src = {
html:['src/html/*.html'],
css:['src/css/*.css'],
js:['src/js/*.js']
}
var build = {
base:'dist/',
views:'dist/views/',
css:'dist/css/',
js:'dist/js/'
}
gulp.task('build:clean',function(){
return gulp.src(build.base,{read:false})
.pipe(clean({force:true}))
.pipe(notify(({message:'清除---目录结构'})))
})
gulp.task('build:views',function(){
return gulp.src(src.html)
.pipe(htmlmin({collapseWhitespace: true,minifyJS:true,minifyCSS:true})) //minifyJS----压缩页面中js
.pipe(gulp.dest(build.base))
.pipe(browserSync.reload({stream:true}))
.pipe(notify({message:'html---编译完成'}))
})
gulp.task('build:css',function(){
return gulp.src(src.css)
.pipe(concat('app.css'))
.pipe(cleanCSS({debug: true}, function(details) {
console.log(details.name + ': ' + details.stats.originalSize);
console.log(details.name + ': ' + details.stats.minifiedSize);
}))
.pipe(gulp.dest(build.css))
.pipe(browserSync.reload({stream:true}))
.pipe(notify({message:'css---编译完成'}))
})
/*
return gulp.src('styles/*.css')
.pipe(cleanCSS({debug: true}, function(details) {
console.log(details.name + ': ' + details.stats.originalSize);
console.log(details.name + ': ' + details.stats.minifiedSize);
}))
.pipe(gulp.dest('dist')); */
gulp.task('build:js',function(){
return gulp.src(src.js)
.pipe(concat('app.js'))
.pipe(uglify())
.pipe(gulp.dest(build.js))
.pipe(browserSync.reload({stream:true}))
.pipe(notify({message:'js编译完成'}))
})
gulp.task('build:app',['build:css','build:js','build:views'])
gulp.task('build',function(){
runSequence('build:clean',['build:app'])
})
gulp.task('bs:sync',function(){
browserSync({
notify:false,
port:3006,
server:{
baseDir:build.base
}
})
})
gulp.task('watch',function(){
gulp.watch(src.html,['build:views']),
gulp.watch(src.js,['build:js']),
gulp.watch(src.css,['build:css'])
})
/*
做同步到浏览器:再编译之后自动刷新浏览器
*/
//--------------------------gulp执行----------------------------
gulp.task('default',function(){
//下面两种运行方式都可以
gulp.start('build','watch','bs:sync')
//runSequence('build','bs:sync','watch')
})
//------------------------------------------------------
gulp.task('help',function(){
console.log('build 创建')
console.log('prod----- 生产')
})
/*function log(msg){
util.log(util.colors.blue(msg))
}
function handleError(err){
log(err.toString());
this.emit('end');
}
*/
package.json包
{
"name": "my-gulp",
"version": "1.0.0",
"description": "demo",
"dependencies": {
"express": "3.x",
"gulp-rev-collector": "^1.2.2"
},
"devDependencies": {
"browser-sync": "^2.12.3",
"gulp-asset-rev": "0.0.15",
"gulp-clean": "^0.3.2",
"gulp-clean-css": "^3.8.0",
"gulp-concat": "^2.6.0",
"gulp-htmlmin": "^3.0.0",
"gulp-mini-css": "^0.0.3",
"gulp-notify": "^3.0.0",
"gulp-requirejs-optimize": "^0.3.2",
"gulp-rev": "^8.0.0",
"gulp-uglify": "^1.5.3",
"run-sequence": "^2.1.0"
},
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"author": "chua",
"license": "ISC"
}