gulp 入門

公司項目中用的代碼構建工具是gulp,如今對用到的gulp插件的用法作一下總結。javascript

gulp是基於node.js的自動任務運行器,咱們用它來完成javascript、css、sass/less、html/css、image等文件的合併和壓縮,以及瀏覽器自動刷新、監聽文件等等。css

首先要安裝node.js環境,而後全局安裝gulp(使用的是淘寶鏡像的cnpm)): html

cnpm install gulp -g

而後在項目文件夾下新建一個名爲gulpfile.js的文件,這個文件就是gulp的主文件,在這個文件中編寫gulp任務。java

var gulp = require('gulp');

這行代碼告訴node去node_modules中查找gulp包,先局部查找,找不到再去全局環境中找,而後將其賦給變量gulp,就能夠使用了。node

在項目文件夾下打開node命令行窗口,安裝gulp包,--save-dev是爲了將安裝的gulp的版本信息寫入package.json文件中,這個文件中保存了和項目相關的各類依賴關係,在這裏就是項目所安裝的插件:web

cnpm install gulp --save-dev

OK,如今咱們就能夠使用gulp了。gulp的使用方法很是簡單:npm

gulp.task('taskName',function(){  
  return gulp.src('文件地址')
      .pipe(導入到gulp插件中)
      .pipe(someplugin())
      .pipe(gulp.dest('要輸出文件的地址'));
});

任務名稱是本身起的,而後在node命令行窗口中執行命令便可:json

gulp taskName

咱們的項目中用到了以下插件:gulp

var less = require('gulp-less'),//css預處理
    concat = require('gulp-concat'),//合併插件
    uglify = require('gulp-uglify'),//壓縮js的插件
    minifyCss = require('gulp-minify-css'),//壓縮CSS插件
    rename = require('gulp-rename'),//重命名插件
    plumber = require('gulp-plumber'),//錯誤監聽處理
    autoprefixer = require('gulp-autoprefixer');

將它們依次安裝並保存在package.json文件中後,就能夠使用了。瀏覽器

gulp API主要有四個:gulp.src,gulp.dest,gulp.task,gulp.watch;只要合理使用這四個API就能夠方便迅速的配置文件,gulp真的是很方便.

//將less文件編譯成css並壓縮

gulp.task('less',function(){
   return gulp.src('app/src/less/*.less')
       .pipe(autoprefixer({
          browsers:['last 2 versions','Android >= 4.0'],
          cascade:true,//是否美化屬性值 默認:true 像這樣:
          //-webkit-transform:rotate(45deg);
          //        transform:rotate(45deg);
          remove:true //是否去掉沒必要要的前綴 默認:true
       }))
       .pipe(less())
       .pipe(gulp.dest('app/src/css'))
       .pipe(minifyCss())
       .pipe(rename({suffix:'.min'}))
       .pipe(gulp.dest('app/bulid/css'));
});

//合併壓縮js文件

gulp.task('concatjs',function(){
   return gulp.src('app/src/js/cat/*.js')
       .pipe(plumber())//防止出錯中止
       .pipe(concat('index.js'))
       .pipe(uglify())
       .pipe(rename({suffix:'.min'}))
       .pipe(gulp.dest('app/bulid/js/'))
});

//移動文件

gulp.task('remove',function(){
   return gulp.src('app/src/*/**.html')
       .pipe(gulp.dest('app/bulid'));
});

  

//監聽事件

gulp.task('watch',['remove','concatjs','less'],function(){
   gulp.watch('app/src/less/*.less',['less']);
    gulp.watch('app/src/js/**/*.js',['js']);
  ......//其它任務
});
相關文章
相關標籤/搜索