gulp學習整理

使用gulp:css

1.解決Javascript和CSS的版本問題.前端

2.解決Javascript和CSS的依賴,在加載順序上的問題,構建工具能夠大大的減小此類問題.
3.在性能優化上,當項目有大量的JS文件時,請求的文件越多耗時越大,這樣無疑拖慢了網頁的速度,而gulp可以經過:文件合併,文件壓縮進行解決。
4.在效率的提高上gulp可以作到:
  vendor前綴:在CSS3使用愈來愈多的時候,咱們都知道一些CSS的特性,不一樣的瀏覽器CSS有不一樣的前綴,若是咱們手工添加將會很繁瑣,而若是使用構建工具,不少構建工具能夠自動給我添加CSS的Vendor前綴.
  單元測試:JavaScript的單元測試在使用MVC或者MVVM的框架後,變得愈來愈容易,而單元測試是質量保證的一個很重要的手段,因此在提交以前,使用構建工具自動跑一遍咱們的單元測試是很是重要的
  代碼分析:咱們寫的JavaScript不少時候會有一些潛在的bug, 好比忘了添加分號,某個變量沒有等等,使用一些JavaScript的代碼分析工具,能夠很好的幫咱們檢查一些常見的問題。
  HTML引用JavaScript或者CSS文件:好比咱們須要使用Bower之類來引用前端JavaScript和CSS的第三方庫,那麼若是版本升級,添加移除等都用手工來修改HTML的話,第一比較耗時,第二比較容易疏漏,尤爲是在咱們須要切換Debug和production版本時將會有不少額外的工做,那麼使用前端構建工具能夠很好的解決這些問題。node

gulp和grunt的比較?git

grunt:github

配置過於複雜
插件職責不單一 (就是不SRP)
臨時文件目錄多
性能慢 (由於臨時文件多,天然讀IO多) npm

gulp:
代碼優先.而且相對grunt代碼更加的簡潔明瞭
基於流
1000+的插件json

gulp的安裝和使用:gulp

1.Gulp安裝:數組

首先咱們須要安裝nodejs,經過 -v 檢查是否安裝成功和版本 node -v ,npm -v瀏覽器

進行全局安裝:npm install gulp -g 

全局安裝後,還須要切換到項目的根目錄下,單獨爲單個項目進行安裝下;安裝以下:npm install gulp

若是想在安裝的時候把gulp寫進package.json文件的依賴中,則能夠加上 –save-dev  例:npm install gulp --save-dev

2.gulp的4個API:

1.gulp.task:
gulp.task(name [, deps, fn])
註冊一個task, name 是task的名字,deps是可選項,就是這個task依賴的tasks, fn是task要執行的函數

2.gulp.src:
gulp.src(globs[, options])
與globs 匹配的文件,能夠是string或者一個數組

3.gulp.dest

定義gulp.dest(path[, options]) 就是最終文件要輸出的路徑,options通常不用

4.gulp.watch

gulp.watch(glob [, opts], tasks) or gulp.watch(glob [, opts, cb]) 就是監視文件的變化,而後運行指定的Tasks或者函數,這個相比Grunt須要使用插件,gulp自己就支持的很好。

3.使用gulp:

1.經過npm init來建立而且配置package.config文件
2.手動建立gulpfile.js文件,gulp默認是調用該文件的
3.在DOS命令下下載須要的用插件如:

在gulpfile中首先須要聲明:var gulp = require('gulp');
             var jshint = require('gulp-jshint');
             gulp.task('jshint', function() {
               gulp.src('./src/scripts/*.js')
               .pipe(jshint())
               .pie(jshint.reporter('default'));
            });
在DOS命令中執行:gulp jshint

例子:

var gulp = require('gulp'),
less = require('gulp-less'),
autoprefixer = require('gulp-autoprefixer'),
minifycss = require('gulp-minify-css'),
jshint = require('gulp-jshint'),
uglify = require('gulp-uglify'),
concat = require('gulp-concat'),
imagemin = require('gulp-imagemin'),
rename = require('gulp-rename'),
livereload = require('gulp-livereload'),
del = require('del');

//圖片壓縮
gulp.task('image', function() {
   gulp.src('img/*.+(jpg|png|gif|svg)')
   .pipe(imagemin()) //壓縮
   .pipe(gulp.dest('img/images')); //輸出
});

gulp.task('script', function() {
   gulp.src("./js/*.js")
   .pipe(jshint())
   .pipe(jshint.reporter('default'))
   .pipe(concat("main.js"))
   .pipe(gulp.dest('./main/'))
   .pipe(rename({
    suffix: ".min"
   }))
   .pipe(uglify())
   .pipe(gulp.dest("./main/"))
})

gulp.task('style', function() {
   gulp.src("./css/*.css")
   .pipe(less())
   .pipe(gulp.dest('./css/'))
   .pipe(livereload())
   .pipe(autoprefixer("last 2 version", 'safari5', 'ie8', 'ie9', 'opera12.1'))
   .pipe(gulp.dest("./maincss/"))
   .pipe(rename({
   suffix: ".min"
   }))
   .pipe(minifycss())
   .pipe(gulp.dest("./maincss/"))

})

gulp.task('default', function() {
  gulp.run("style","script");
  gulp.watch('./css/*.css', ['style'],'./js/*.js', ['script'], function() {
  gulp.run("style","script");
});

 
 

})

})
相關文章
相關標籤/搜索