1. 程式人生 > >前端構建工具gulp的使用教程集合

前端構建工具gulp的使用教程集合

基礎教程:http://www.imooc.com/search/article?words=gulp

常用外掛:http://www.mamicode.com/info-detail-517085.html

系列教程:http://www.w3cplus.com/blogs/blueed

視訊教程:http://www.jikexueyuan.com/course/2261.html

細節注意:http://www.cnblogs.com/2050/p/4198792.html

revCollector-路徑替換-詳細介紹:http://blog.csdn.net/hayleyxia/article/details/46969711

revCollector-路徑替換-預設只首次替換成功:http://blog.csdn.net/u010869754/article/details/52182015

gulp.spritesmith-精靈圖:http://www.tuicool.com/articles/umiEbq

gulp-file-include-模板複用功能:https://www.npmjs.com/package/gulp-file-include

淘寶 NPM 映象:https://npm.taobao.org/

注意一點:儘量不要用npm直接安裝外掛,國外的東西網速很慢,很可能出現各種缺少模組的的現象,所以請使用國內的npm映象安裝外掛,連結在上一行

以下是我常用的外掛package.json:

{
  "devDependencies": {
    "browser-sync": "^2.16.0",
    "gulp": "^3.9.1",
    "gulp-file-include": "^0.14.0",
    "gulp-imagemin": "^3.0.3",
    "gulp-load-plugins": "^1.2.4",
    "gulp-rename": "^1.2.2",
    "gulp-rev": "^7.1.2",
    "gulp-rev-collector": "^1.0.5",
    "gulp-sass": "^2.3.2",
    "gulp-sequence": "^0.4.6",
    "gulp-uglify": "^2.0.0",
    "gulp-watch": "^4.3.9",
    "gulp.spritesmith": "^6.2.1"
  }
}
注意點:

1. 圖片壓縮外掛 gulp-imagemin 好像跟 node版本有關,如果 node版本過高,貌似會報錯
2. 不建議使用 自動載入外掛 gulp-load-plugins,有點坑

案例1
var gulp = require('gulp'),
    sequence = require('gulp-sequence'),
    uglify = require('gulp-uglify'),
    rename = require('gulp-rename'),
    rev = require('gulp-rev'),
    revc = require('gulp-rev-collector');
  
// 壓縮js並加min字尾
gulp.task('uglify', function () {  
    return gulp.src(['./js/minichat.js', './skin/h5chat/js/app.js'])  
    .pipe(rename({suffix:'.min'}))  
    .pipe(uglify())  
    .pipe(gulp.dest('./skin/ding'));  
}); 

// 給檔名加上MD5字串  
gulp.task('rev', function () {  
    return gulp.src(['./css/minichat.css', './skin/h5chat/css/app.css', './skin/ding/minichat.min.js', './skin/ding/app.min.js'])  
        .pipe(rev())  
        .pipe(gulp.dest('./skin/ding'))  
        .pipe(rev.manifest())// 生成清單json
        .pipe(gulp.dest('./skin/ding'));  
});
  
// 替換html中引用的檔名,和任務rev聯合使用  
gulp.task('revc', function() {  
    return gulp.src(['./skin/ding/*.json', './h5chat.html'])// 讀取清單json和html     
        .pipe(revc({  
            replaceReved: true// 必加,模板中已經被替換的檔案還能再被替換  
        }))  
        .pipe(gulp.dest('./skin/ding'));  
});  

    
// 複製頁面,改變html檔名,防止快取
gulp.task('revHtml', function () {  
    return gulp.src('./skin/ding/h5chat.html')  
        .pipe(rev())  
        .pipe(gulp.dest('./'))  
        .pipe(rev.manifest())// 生成清單json
        .pipe(rename({suffix:'.html'}))  
        .pipe(gulp.dest('./skin/ding'));  
});  

// 控制任務執行的順序
gulp.task('sequence', sequence('uglify', 'rev', 'revc', 'revHtml'));
  
// 監控  
gulp.task('watch', function() {  
    gulp.watch(['./css/minichat.css', './skin/h5chat/css/app.css', './js/minichat.js', './skin/h5chat/js/app.js', './h5chat.html'], function (event) {
        sequence('uglify', 'rev', 'revc', 'revHtml') (function (err) {
            if (err) console.log(err)
        })
    })
}); 

案例2

// 壓縮js並加min字尾
var gulp = require('gulp'),
    rename = require('gulp-rename'),
    uglify = require('gulp-uglify');

gulp.task('uglify', function () {
    return gulp.src('./js/*.js')
    .pipe(rename({suffix:'.min'}))
    .pipe(uglify({

    }))
    .pipe(gulp.dest('./js'));
});

案例3

// 自動重新整理  
var gulp = require('gulp');  
var browserSync = require('browser-sync').create();  
  
  
gulp.task('browserSync', function() {  
    browserSync.init({  
        server: "./"  
    });  
  
    gulp.watch(['*.html', 'js/abc/*.js']).on('change', browserSync.reload);  
});

案例4

var gulp = require('gulp');
//載入gulp-load-plugins外掛,並馬上執行它,不建議使用該外掛,很坑,所以以下可能報錯
var plugins = require('gulp-load-plugins')();

//模板複用
gulp.task('fileinclude', function() {
    return gulp.src(['./*.html'])
    .pipe(plugins.fileinclude())
    .pipe(gulp.dest('../'));
});

//sass(檔名前面帶有_的,預設不被編譯)
gulp.task('sass', function() {
    return gulp.src('./scss/*.scss')
    .pipe(plugins.sass({
        outputStyle: 'compressed'
    })).pipe(gulp.dest('../css'));
});

//圖片無失真壓縮
gulp.task('imagemin', function() {
    return gulp.src('./images/*')
    .pipe(plugins.imagemin())
    .pipe(gulp.dest('../images'));
});

//給檔名加上MD5字串
gulp.task('rev', function () {
    return gulp.src('js/*.js')
        .pipe(plugins.rev())
        .pipe(gulp.dest('dist/js'))
        .pipe(plugins.rev.manifest())
        .pipe(gulp.dest('dist'));
});

//替換html中引用的檔名,和任務rev聯合使用
gulp.task('revc', function() {
    return gulp.src(['dist/*.json', 'rev.html'])//讀取清單json和html
        .pipe(plugins.revCollector({
        	replaceReved: true//必加,模板中已經被替換的檔案還能再被替換
        }))
        .pipe(gulp.dest('./'));
});

//自動生成精靈圖
gulp.task('sprite', function () {
    return gulp.src('images/*.png')
    .pipe(plugins.spritesmith({
        imgName: 'sprite.png',
        cssName: 'sprite.scss',
        cssFormat: 'scss'
    }))
    .pipe(gulp.dest('images'));
});

//監控
gulp.task('watch', function() {
  	gulp.watch('js/*.js', ['rev']);
  	gulp.watch('js/*.js', ['revc']);
});






相關推薦

前端構建工具gulp的使用教程集合

基礎教程:http://www.imooc.com/search/article?words=gulp 常用外掛:http://www.mamicode.com/info-detail-517085.html 系列教程:http://www.w3cplus.com/blog

前端構建工具gulp入門教程

css 粘貼 定位 運行時 pac follow scrip 檢查 get 本文假設你之前沒有用過任何任務腳本(task runner)和命令行工具,一步步教你上手Gulp。不要怕,它其實很簡單,我會分為五步向你介紹gulp並幫助你完成一些驚人的事情。那就直接開始吧。 第一

前端構建工具gulp超詳細配置, 使用教程(圖文)

流程 1. 輸入命令(可以使用git bash或者命令控制檯cmd) npm install -g gulp 安裝全域性gulp命令 2. 建立一個專案資料夾, 當前專案資料夾下輸入命令npm init   配置package.json檔案, 這一部分看

前端構建工具gulp

pack 合並 項目流程 nload 控制 編譯 插件安裝 pro 目的 前段時間做一個項目,試著用gulp來構建前端代碼。今天簡單總結了一下: 一:安裝gulp環境   1. 安裝node     在node官方文檔下載匹配的版本 我下載的是如下圖的版本。http:/

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

ocs emp 保留 name 文件路徑 mode 工具 輸出數據 兼容模式 1.gulp的API介紹   gulp.task(name[, deps], fn) ------ 定義要實現的任務   name:必選,任務名稱,自定義名稱,不過註意名稱中不要使用空格

前端構建工具gulp(1)

npm install gulp -g  2本地生成一個package.json的檔案 npm init  3本地專案中需要安裝gulp(專案中需要require) npm install gulp --save-dev

前端構建工具Gulp入門指南(第二篇)

我們上一篇安裝node環境和gulp工具,並簡單介紹了gulp構建工具的使用; 這篇我們重點介紹gulp任務使用方法。 編譯Lass,Autoprefix及縮小化 檢查node環境是否完成安裝成功,執

前端構建工具- gulp

gulp基於流(streaming)的方式構建,首先讀取檔案,編譯壓縮檔案(流的方式),最終將結果生成到配置的檔案目錄下。安裝gulp假設已經安裝了node 和npm (淘寶的cnpm很適合國內使用)。1、首頁全域性安裝gulp。1 npm install --global

前端構建工具gulp的使用基礎

gulp.js是一個前端構建工具,與grunt.js相比,gulp.js無需寫一大堆繁雜的配置引數,僅有四個API,都非常簡單,學習起來很容易,而且gulp.js使用的是node.js中stream來讀取和操作資料,其速度更快。如果你還沒有使用過前端構建工具,或者覺得gru

前端構建工具-gulp !(解決瀏覽器快取問題)

一,為啥要用構建工具專案中的js和css屬於靜態檔案,客戶端第一次訪問的時候會快取這些檔案,那就意味著當我們需要改js跟css的時候,即使我們將檔案中的程式碼改了重新發布,那麼客戶端也是看不到,客戶端發現快取中有同樣路徑的檔案,直接讀取。之前做的專案中,專案上線後客戶開啟一看

“流式”前端構建工具——gulp.js 簡介

Grunt 一直是前端領域構建工具(任務執行器或許更準確一些,因為前端構建只是此類工具的一部分用途)的王者,然而它也不是毫無缺陷的,近期風頭正勁的 gulp.js 隱隱有取而代之的態勢。那麼,究竟是什麼使得 gulp.js 備受關注呢? Grunt 之殤 外掛很難

前端構建工具 Gulp.js 上手例項

在軟體開發中使用自動化構建工具的好處是顯而易見的。通過工具自動化執行大量單調乏味、重複性的任務,比如影象壓縮、檔案合併、程式碼壓縮、單元測試等等,可以為開發者節約大量的時間,使我們能夠專注於真正重要的、有意義的工作,比如設計業務邏輯,編寫程式碼等等。 接下來

前端構建工具gulp的詳細介紹以及使用

什麼是 gulp gulp 是一個前端構建工具,它能通過自動執行常見任務,比如編譯預處理 CSS ,壓縮 JavaScript 和重新整理瀏覽器,來改進網站開發的過程,從而使開發更加快速高效。 為什麼要用 gulp 與 grunt 相比,gu

做一個合格的前端gulp自動化構建工具入門教程

安裝完成 基本 合成 node.js 文件替換 mage 9.png basename 加載 我的新作觀點網http://www.guandn.com (觀點網是一個獵獲新奇、收獲知識、重在獨立思考的網站),它前端js、css的壓縮、合並、md5命名等就使用了gulp自動化

前端自動化構建工具-gulp

出現 ssa uglify 提醒 連接 變化 監聽 前端 復雜 gulp 和grunt這兩個是我知道的自動構建工具,但是說實話都沒在項目中用過,不太清楚自動化構建是什麽意思, 1、grunt和gulp有什麽相同點和不同點?   (1)、易於使用:采用代碼優於配置策略,gul

前端構建工具之爭——Webpack vs Gulp 誰會被拍死在沙灘上

解決問題 所有 less hat aps 書寫 支持 瀏覽器 官方 .table tr>td:nth-child(1){width: 2em !important;padding-left: .6rem !important;padding-right: .6rem !im

前端自動化構建工具Gulp簡單入門

margin 構建工具 function col 處理 .com order lis web 昨天聽同事分享了Gulp的一些簡單使用,決定自己也試一試。 一、安裝   gulp是基於nodejs的,所以要先下載安裝node(直接搜node,在官網下載就好了)   1、全局安

前端自動構建工具-gulp

tex des 文件 邏輯 交互效果 但是 進行 指定路徑 .json 前言   現在的前端開發已經不再僅僅只是靜態網頁的開發了,日新月異的前端技術已經讓前端代碼的邏輯和交互效果越來越復雜,更加的不易於管理,模塊化開發和預處理框架把項目分成若幹個小模塊,增加了最後發布的困難

前端自動化構建工具——gulp

操作過程: 需要配置檔案後才能執行 $ gulp命令 (1)配置一些基本資訊,執行命令:$ npm init 在git指令中,對下面每一項進行配置,注意:GitHub專案的資訊與配置檔案一一對應,如果先關聯了GitHub專案,那麼下面的基本配置中的GitHub專案資訊將

前端構建工具之爭——Webpack vs Gulp 誰會被拍死在沙灘上(轉載)

文章有點長,總共 1800 字,閱讀需要 18 分鐘。哈哈,沒耐心的直接戳我到高潮部分。 理想的前端開發流程 在說構建工具之前得先說說咱期望的前端開發流程是怎樣的? 寫業務邏輯程式碼(例如 es6,scss,pug 等) 處理成瀏覽器認識的(js,css,html) 瀏覽器自動重新整理看到效果 前端開