前端構建工具gulp之實際應用

1.gulp的API介紹

  gulp.task(name[, deps], fn)    ------   定義要實現的任務javascript

  name:必選,任務名稱,自定義名稱,不過注意名稱中不要使用空格;css

  deps:可選,一個包含任務列表的數組,在當前任務以前執行的任務,必須使用正確的異步執行方式:使用一個 callback,或者返回一個 promise 或 stream;html

  fn: 必選,當前任務要執行的操做java

  gulp.src(globs[, options])  -------   輸出符合匹配模式或者匹配模式數組的文件node

  glpbs:必選,匹配模式或者匹配模式數組git

  options:可選,經過 glob-stream 所傳遞給 node-glob 的參數github

  gulp.dest(path[, options])  -------   寫文件並從新輸出數據npm

  path:必選,文件將被寫入的路徑,也能夠傳入一個函數,在函數中返回相應路徑,若是文件夾爲空,將會自動建立json

  options:可選,輸出目錄的cwd參數和權限設置(mode)gulp

  gulp.watch(glob [, opts], tasks) 或 gulp.watch(glob [, opts, cb])   --------   用於監控文件的變化

  glob:必選,一個 glob 字符串,或者一個包含多個 glob 字符串的數組,指定具體監控的文件

  opts:可選,傳給gaze的參數

  tasks:必選,在文件變更後執行的一個或者多個建立的任務名稱

  cb(event):可選,每次變更執行的方法;event.type爲發生的變更類型(addedchanged 或者 deleted),event.path爲觸發該事件的文件路徑

2.gulp的實際應用

    匹配符 *、**、!、{}

gulp.src('./js/*.js') // * ------  匹配js文件夾下全部.js格式的文件
gulp.src('./js/**/*.js')   // **  ------  匹配js文件夾的0個或多個子文件夾
gulp.src(['./js/*.js','!./js/main.js'])    // ! ------  匹配除了main.js以外的全部js文件
gulp.src('./js/**/{test,index}.js')   // {} -------  匹配{}裏的文件名

  css壓縮 

  安裝插件:   npm install gulp-minify-css --save-dev 和  npm install  gulp-make-css-url-version --save-dev

var gulp = require('gulp'),
   cssver = require('gulp-make-css-url-version'), //給css文件裏引用url加版本號 cssmin
= require('gulp-minify-css'); /*css壓縮*/ gulp.task('cssmin',function(){ gulp.src(['./wmmproject/css/*.css','!./wmmproject/css/common.css']) .pipe(cssver()) //給css文件裏引用文件加版本號(MD5) .pipe(cssmin({ advanced:false, //是否開啓高級優化(合併選擇器)默認爲true compatibility:'ie7', //保留ie7以及一下兼容寫法 默認爲"*"兼容模式 keepBreaks: true, //是否保留換行,默認爲false keepSpecialComments: '*' //保留全部特殊前綴,若是不加,有可能將會刪除你的部分前綴 })) .pipe(gulp.dest('./wmmproject/dist/css')); })

  js壓縮   

  安裝插件:   npm install gulp-uglify --save-dev   和   npm install gulp-rename --save-dev

var gulp = require('gulp'),
   rename = require('gulp-rename'),//重命名
    uglify = require('gulp-uglify');//js壓縮  

gulp.task('jsmin',function(){   gulp.src('./wmmproject/js/*.js')     .pipe(uglify({       mangle: true, //是否修改變量名,默認爲true       compress: true//是否徹底壓縮,默認爲true     }))     .pipe(rename({suffix:'.min'})) //重命名     .pipe(gulp.dest('./wmmproject/dist/js')); })

  html壓縮

  安裝插件:   npm install gulp-htmlmin --save-dev   和    npm install gulp-rev-append --save-dev 

var gulp = require('gulp'),
      htmlmin = require('gulp-htmlmin');//html壓縮
gulp.task('htmlmin',function(){
      gulp.src('./wmmproject/demo/*.html')
          .pipe(htmlver())   //html內的文件後必須加入?rev=
          .pipe(htmlmin({
                removeComments: true,//清除HTML註釋
                collapseWhitespace: true,//壓縮HTML
                collapseBooleanAttributes: true,//省略布爾屬性的值 <input checked="checked"/> ==> <input  checked/>
                removeEmptyAttributes: true,//刪除全部空格做屬性值 <input id="" /> ==> <input />
                removeScriptTypeAttributes: true,//刪除<script>的type="text/javascript"
                removeStyleLinkTypeAttributes: true,//刪除<style>和<link>的type="text/css"
                minifyJS: true,//壓縮頁面JS
                minifyCSS: true//壓縮頁面CSS
          }))
          .pipe(gulp.dest('./wmmproject/dist/demo'))
})

  image壓縮    

  安裝插件:   npm install gulp-imagemin --save-dev

var gulp = require('gulp'),
     imgmin =  require('gulp-imagemin');
gulp.task('imagemin',function(){
      gulp.src('wmmproject/images/*jpg')
          .pipe(imgmin({
              optimizationLevel: 5, //類型:Number  默認:3  取值範圍:0-7(優化等級)
              progressive: true, //類型:Boolean 默認:false 無損壓縮jpg圖片
              interlaced: true, //類型:Boolean 默認:false 隔行掃描gif進行渲染
              multipass: true //類型:Boolean 默認:false 屢次優化svg直到徹底優化
          }))
          .pipe(gulp.dest('wmmproject/dist/images'))
})

  文件合併 

  安裝插件:   npm install gulp-concat --save-dev

var gulp = require('gulp'),
     concat = require('gulp-concat');
gulp.task('concat',function(){
      gulp.src(['wmmproject/js/flexible.js','wmmproject/js/normal.js'])
          .pipe(concat('all.js'))//合併後的文件名
          .pipe(gulp.dest('wmmproject/dist/js/'))
})

  js檢查

  安裝插件:   npm install gulp-jshint   jshint  --save-dev

      首先在package.json內配置以下:

"jshintConfig":{
    "undef":true,
    "unused":true,
    "predef": [ "MY_GLOBAL", "ads" ] 
  }

  參數配置說明以下:

  

var gulp = require('gulp'),
     jshint = require('gulp-jshint');

gulp.task('jshint',function(){
      gulp.src('wmmproject/js/*.js')
          .pipe(jshint())
          .pipe(jshint.reporter('default'))
})

   雪碧圖

     安裝插件:   npm install gulp.spritesmith  --save-dev

var gulp=require('gulp');  
    spritesmith=require('gulp.spritesmith'); 
gulp.task('sprite',function(){  
     gulp.src('wmmproject/images/*.png')  
        .pipe(spritesmith({  
            imgName:'wmmproject/images/sprite.png', //生成圖的名稱 
            cssName:'wmmproject/css/sprite.css',  //對應生成的css文件 
            padding:5,  //合成時兩個圖片的間距
            algorithm:'binary-tree' //圖片排列布局,有四個可選值,分別爲top-down、left-right、diagonal、alt-diagonal、binary-tree 
        }))  
        .pipe(gulp.dest('wmmproject/css'))  
}) 
相關文章
相關標籤/搜索