- Notifications
You must be signed in to change notification settings - Fork 7
Open
Labels
Description
简介
Gulp is a streaming build system, intended for automating and enhance your workflow

上面是gulp官方给出的定义,表明它是一个服务于前端工程自动化的强有力工具,其工作性质和C++ 的make,Java中的Ant, Maven差不多,都是为了方便开发而设计的。
相对于Grunt,它具有如下优点:
- 易于使用:采用代码优于配置策略,Gulp让简单的事情继续简单,复杂的任务变得可管理。
- 高效:通过利用Node.js强大的流,不需要往磁盘写中间文件,可以更快地完成构建。
- 高质量:Gulp严格的插件指导方针,确保插件简单并且按你期望的方式工作。
- 易于学习:通过把API降到最少,你能在很短的时间内学会Gulp。构建工作就像你设想的一样:是一系列流管道。
下面是我常用的gulp工作流,如有错误,欢迎指正:
var gulp = require("gulp"); var pug = require("gulp-pug"); // jade template engine var sass = require("gulp-sass"); var cleanCss = require("gulp-clean-css"); // css minify var autoprefixer = require("gulp-autoprefixer"); var livescript = require("gulp-livescript"); var jshint = require("gulp-jshint"); // js hint var concat = require("gulp-concat"); // js concat var uglify = require("gulp-uglify"); // js uglify var rename = require("gulp-rename"); // rename var webserver = require("gulp-webserver"); // a simple webserver var livereload = require("gulp-livereload"); // livereload var clean = require("gulp-clean"); var errorNotifier = require('gulp-error-notifier'); gulp.task("serve", function() { gulp.src("./") .pipe(webserver({ livereload:true, open:true, directoryListing: false })); }); gulp.task("templates", function() { var src = "./src/templates/*.jade"; var dist = "./"; gulp.src(src) .pipe(errorNotifier.handleError( pug() )) .pipe(gulp.dest(dist)); }); gulp.task("style", function() { var src = "./src/scss/*.scss"; var dist = "./dist/css/"; gulp.src(src) .pipe(errorNotifier.handleError( sass() )) .pipe(autoprefixer({ browsers: ['last 2 versions'], cascade: false })) .pipe(rename({suffix: ".min"})) .pipe(cleanCss()) .pipe(gulp.dest(dist)); }); gulp.task("script", function() { var src = "./src/js/*.js"; var dist = "./dist/js/"; gulp.src(src) // .pipe(errorNotifier.handleError( // livescript({ // bare: true // }) // )) .pipe(jshint()) .pipe(jshint.reporter('default')) .pipe(concat("main.js")) .pipe(rename({suffix: ".min"})) //.pipe(uglify()) .pipe(gulp.dest(dist)); }); gulp.task("clean", function() { var target = "./dist/*"; gulp.src([target], {read: false}) .pipe(clean()); }); gulp.task("watch", function() { gulp.watch("./src/templates/*.jade", ["templates"]); gulp.watch("./src/scss/*.scss", ["style"]); gulp.watch("./src/js/*.js", ["script"]); }); gulp.task("default", function() { gulp.start("templates", "style", "script", "serve", "watch"); }); // if development is node, just add nodemon /*var nodemon = require('gulp-nodemon'); gulp.task('nodemon', function() { return nodemon({ script: 'app.js', env: { 'NODE_ENV': 'development' } }) });*/