基於流的前端自動化構建工具,利用gulp能夠提升前端開發效率,特別是在先後端分離的項目中。使用gulp能完成如下任務:css
前端構建流程:html
開發->分析->測試->編譯->發佈部署前端
一段簡單的基於gulp的項目構建代碼,gulpfile.js內容以下所示:jquery
gulp.task('default',function(){ return gulp .src("**/*.js") .pipe(jshint()) .pipe(concat()) .pipe(uglify()) .pipe(gulp.dest('./build/')) })
上面gulp配置完成的內容是:gulp
1.將目錄下全部的以.js
結尾的文件bootstrap
2.執行jshint
代碼檢查後端
3.而後concat
合併爲一個文件,sass
4.再使用uglify
對文件進行壓縮,服務器
5.最後輸出到當前目錄下,build
文件夾中。cookie
項目構建中須要使用的模塊有如下這些:
var gulp = require("gulp"); //connect靜態服務器 var connect = require("gulp-connect"); // 合併文件模塊 var concat = require('gulp-concat'); //less編譯模塊 var less = require('gulp-less'); //壓縮js var uglify = require('gulp-uglify'); //壓縮css var minifyCss = require('gulp-minify-css'); //壓縮html var minifyHtml = require('gulp-minify-html'); //項目中須要將.less文件重命名爲.css var rename = require('gulp-rename'); //jshint檢查js靜態語法檢查 var jshint = require('gulp-jshint');
由於項目中使用bower進行類庫的管理,因此在項目打包的過程,須要從bower_components文件夾中就項目實際使用的js和css文件複製發佈文件夾中。在gulpfile.js中有一個task名爲vendor
,主要任務就是將項目中實際使用的js和css複製到發佈文件夾中。咱們項目發佈文件夾名字爲dist。task代碼以下:
gulp.task('vendor', function () { gulp.src([ 'app/assets/bower_components/ui-select/dist/select.min.css', 'app/assets/bower_components/toastr/toastr.min.css', 'app/assets/bower_components/angular-tour/dist/angular-tour.css', 'app/assets/bower_components/jquery/jquery.min.js', 'app/assets/bower_components/angular/angular.min.js', 'app/assets/bower_components/angular-cookies/angular-cookies.min.js', 'app/assets/bower_components/angular-messages/angular-messages.min.js', 'app/assets/bower_components/angular-animate/angular-animate.min.js ', 'app/assets/bower_components/bootstrap/dist/js/bootstrap.min.js', 'app/assets/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js', 'app/assets/bower_components/angular-ui-router/release/angular-ui-router.min.js', 'app/assets/bower_components/angular-sanitize/angular-sanitize.min.js', 'app/assets/bower_components/ui-select/dist/select.js', 'app/assets/bower_components/oclazyload/dist/oclazyload.min.js', 'app/assets/bower_components/angular-smart-table/dist/smart-table.min.js', 'app/assets/bower_components/angular-file-upload/dist/angular-file-upload.min.js', 'app/assets/bower_components/echarts/dist/echarts.min.js', 'app/assets/bower_components/angular-tour/dist/angular-tour-tpls.js', 'app/assets/bower_components/toastr/toastr.min.js' ], { base: 'app' }) .pipe(gulp.dest("dist")); });
開發的源代碼 vs 發佈的代碼文件文件大小對比