Created
December 9, 2015 10:10
-
-
Save mcattx/05dbdb77d2de5c90f16f to your computer and use it in GitHub Desktop.
My personal gulp config
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * 前端资源构建 | |
| * | |
| */ | |
| var gulp = require('gulp'); | |
| var uglify = require('gulp-uglify'); | |
| var minify = require('gulp-minify-css'); | |
| var sass = require('gulp-sass'); | |
| var livereload = require('gulp-livereload'); | |
| var imagemin = require('gulp-imagemin'); | |
| var pngquant = require('imagemin-pngquant'); | |
| var plumber = require('gulp-plumber'); | |
| var rename = require('gulp-rename'); | |
| var cssbeautify = require('gulp-cssbeautify'); | |
| var rev = require('gulp-rev'); | |
| var through = require('through2'); | |
| var rimraf = require('rimraf'); | |
| var path = require('path'); | |
| var revCollector = require('gulp-rev-collector'); | |
| var revOutdated = require('gulp-rev-outdated'); | |
| var schedule = require('node-schedule'); | |
| /** sass编译 */ | |
| gulp.task('sass', function(){ | |
| gulp.src('./sass/**/*.scss') | |
| .pipe(plumber()) | |
| .pipe(sass().on('error', sass.logError)) | |
| .pipe(cssbeautify()) | |
| .pipe(gulp.dest('./css')) | |
| }); | |
| /** 压缩图片 */ | |
| gulp.task('minifyImage', function(){ | |
| gulp.src(['./images/*']) | |
| .pipe(plumber()) | |
| .pipe(imagemin({ | |
| progressive: true, | |
| svgoPlugins: [{removeViewBox: false}], | |
| use: [pngquant()] | |
| })) | |
| .pipe(gulp.dest('./release/images')) | |
| }); | |
| /** 自动刷新页面 */ | |
| gulp.task('livereload', function(){ | |
| livereload.listen(); | |
| gulp.watch('./sass/**/*.scss', ['sass']); | |
| gulp.watch(['./html/**/*.html', './sass/**/*.scss', './js/**/*.js']).on('change', livereload.changed); | |
| }); | |
| /** css加版本号防止缓存 */ | |
| gulp.task('cssVersion', function(){ | |
| gulp.src('./css/**/*.css') | |
| .pipe(plumber()) | |
| .pipe(rev()) | |
| .pipe(minify()) | |
| .pipe(gulp.dest('./release/css')) | |
| .pipe(rev.manifest()) | |
| .pipe(gulp.dest('./release/rev/css')) | |
| }); | |
| /** js加版本号防止缓存 */ | |
| gulp.task('jsVersion', function(){ | |
| gulp.src('./js/**/*.js') | |
| .pipe(plumber()) | |
| .pipe(rev()) | |
| .pipe(uglify()) | |
| .pipe(gulp.dest('./release/js')) | |
| .pipe(rev.manifest()) | |
| .pipe(gulp.dest('./release/rev/js')) | |
| }); | |
| /** 同步html里加上版本号的静态资源 */ | |
| gulp.task('syncVersion', ['cssVersion', 'jsVersion', 'minifyImage'], function(){ | |
| gulp.src(['./release/rev/**/*.json', './html/**/*.html']) | |
| .pipe(revCollector({ | |
| replaceReved: true, | |
| dirReplacements: { | |
| '/': './release' | |
| } | |
| })) | |
| .pipe(gulp.dest('./release/html')) | |
| }); | |
| function cleaner() { | |
| return through.obj(function(file, enc, cb){ | |
| rimraf( path.resolve( (file.cwd || process.cwd()), file.path), function (err) { | |
| if (err) { | |
| this.emit('error', new gutil.PluginError('Cleanup old files', err)); | |
| } | |
| this.push(file); | |
| cb(); | |
| }.bind(this)); | |
| }); | |
| }; | |
| gulp.task('clean', function(){ | |
| gulp.src(['release/**/*.*'], {read: false}) | |
| .pipe(revOutdated(1)) | |
| .pipe(cleaner()); | |
| return; | |
| }); | |
| /** 定时任务 */ | |
| //@todo | |
| /** 开发环境 */ | |
| gulp.task('dev', ['sass', 'livereload']); | |
| /** 生产环境 */ | |
| gulp.task('build', ['syncVersion']); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment