/*
gulp学习之路:
问题一:
*在gulp中用法
问题二:
gulpfile.js 可以分享给朋友,而且他只需要执行【npm install】
*/
var gulp = require('gulp');
var uglify = require('gulp-uglify');
var minifycss= require('gulp-minify-css');
var imagemin = require('gulp-imagemin');
var less = require('gulp-less');
var autoprefixer = require('gulp-autoprefixer')
var gutil = require('gulp-util')
var watchPath = require('gulp-watch-path')
var combiner = require('stream-combiner2')
var handleError = function (err) {
var colors = gutil.colors;
console.log('\n')
gutil.log(colors.red('Error!'))
gutil.log('fileName: ' + colors.red(err.fileName))
gutil.log('lineNumber: ' + colors.red(err.lineNumber))
gutil.log('message: ' + err.message)
gutil.log('plugin: ' + colors.yellow(err.plugin))
}
gulp.task('watchjs', function () {
gulp.watch('ori/js/**/*.js', function (event) {
var paths = watchPath(event, 'ori/', 'dist/')
/*
paths
{ srcPath: 'ori/js/log.js',
srcDir: 'ori/js/',
distPath: 'dist/js/log.js',
distDir: 'dist/js/',
srcFilename: 'log.js',
distFilename: 'log.js' }
*/
gutil.log(gutil.colors.green(event.type) + ' ' + paths.srcPath)
gutil.log('Dist ' + paths.distPath)
var combined = combiner.obj([
gulp.src(paths.srcPath),
uglify(),
gulp.dest(paths.distDir)
])
combined.on('error', handleError)
})
})
gulp.task('script', function() {
// 将你的默认的任务代码放在这
gulp.src('ori/js/*.js')
.pipe(uglify())
.pipe(gulp.dest('dist/js'))
});
gulp.task('css',function(){
gulp.src('ori/css/*.css')
.pipe(autoprefixer({
browsers: 'last 2 versions'
}))
.pipe(minifycss())
.pipe(gulp.dest('dist/css'))
});
gulp.task('image',function(){
gulp.src('ori/img/*.*')
.pipe(imagemin({
progressive:true
}))
.pipe(gulp.dest('dist/img'))
});
gulp.task('less',function(){
gulp.src('ori/less/**.less')
.pipe(less())
.pipe(autoprefixer({
browsers: 'last 2 versions'
}))
.pipe(minifycss())
.pipe(gulp.dest('dist/css'))
});
gulp.task('auto',function(){
gulp.watch('ori/js/*.js', ['script']);
gulp.watch('ori/css/*.css',['css']);
gulp.watch('ori/img/*.*',['image']);
gulp.watch('ori/less/**.less',['less'])
});
gulp.task('default',['script','auto','css','image','less','watchjs']);