SlideShare a Scribd company logo
CP 值超⾼高的 GULP
YVONNE YU
1
• 介紹 Gulp
• 建置 Gulp 環境
• Gulp 語法
• Gulp 套件
2
GULP 介紹
• 基於 node.js
• 前端建構⼯工具
• 使⽤用 字串流 ⽅方式建制
3
字串流(stream)
4
scss/*.scss
範例:編輯 scss ⾄至 css 檔案,並且 minify css
css/*.css
Read Files Write Files編譯 scss minify
程式碼
css
minify

css
建置環境
5
安裝 NODE.JS (NPM)
http://nodejs.org (mac 安裝說明)
6
開始 GULP 專案
• 新增專案資料夾
• e.g. gulp-test
7
• npm install gulp - - save-dev
• 新增 package.json 來管理套件

- npm init 新增 default package.json

- 專案相依的套件有哪些
8
9
介紹 Package.json
name*: 專案名稱
version*: 專案 version (1.0.0)
dependencies: 存放專案需要的模組套件 (-save)

- ex: jQuery, AngularJS, Bootstrap
devDependencies: 存放開發需要的套件 ( --save-dev)

- ex: gulp 套件, 測試⼯工具, etc
* 號為必填
10
!
• 新增 gulpfile.js (檔名⼀一定要對)
• require(‘gulp’); 在檔案裡
!
!
11
GULP 語法教學
12
GULP.TASK
• gulp.task(name, [, deps], doSomething)
13
• 範例:gulp.task(‘scripts’, function () { // 處理 js })
• 新增⼀一個名叫 scripts 的任務
• 範例:gulp.task(‘build’, [‘css’, ‘scripts’]);
• 新增⼀一個 build 任務,依序處理 css 跟 scripts 任務
在 terminal 輸⼊入 gulp [任務名稱] 就可以執⾏行任務
建任務
GULP.SRC
• 回傳指定路徑的檔案
• 參考 node-glob syntax
!
!
14
使⽤用在 templates 資料夾
下⾯面全部的 jade 檔案
指定輸⼊入檔案
GULP.DEST
• 發佈編輯好的檔案在指定路徑資料夾
• 如果資料夾沒有存在,會幫忙新增
!
!
15
編譯後的 html
存 minify 後的檔案
輸出檔案位置
GULP.WATCH
• 當有檔案變動時會跑對應的 task
範例:
!
!
1. 觀察 js 資料夾下⾯面全部的 js 檔案,⼀一旦發現檔案有變更,
執⾏行 uglify 跟 reload 兩個任務。
2. 當有檔案變更,會發送 change event。可在跑檔案前做前
置作業。
16
觀察檔案
GULP 套件介紹
npm install [套件名稱] --save-dev
17
• 截⽌止⾄至 2015/01/26, 總共有 1,207 套件
• for CSS:

gulp-ruby-scss, gulp-less, gulp-sourcemaps, css-sprite,
minify-css,autoprefixer, etc
• for JavaScript:

gulp-concat, gulp-uglify, jshint, gulp-coffee, etc
• for build:

gulp-util, gulp-plumber, gulp-browser-sync, gulp-load-
plugins, gulp-changed, gulp-rename, gulp-livereload,
gulp-clean, etc

18
SCSS & MINIFY
19
1. 下載套件
2. 新增任務(Task)
3. 指定 input 位置
4. 編譯 sass
5. minify 編譯後的 css
6. 把 minify css 放置在 css 資料夾內
範例:編輯 scss ⾄至 css 檔案,並且 minify css
CONCAT & UGLIFY
20
1. uglify 每份 js
2. 把壓縮後的 js 合併
3. 合併 js 輸出到 dist/all.min.js
把 js 檔案醜化(混淆)並合併,⼤大幅減少檔案⼤大⼩小
GULP-CHANGED
21
只處理有修改的檔案,不浪費時間處理沒有修改檔案
// jshint 語法檢測
把 changed 套件放在指定

路徑之後,跑 jshint 之前
22
假如我們需要上述的範例的全部套件
1. 需要先在 package.json 宣告
23
2. 再到 gulpfile.js require 每個套件
24
3. 開始使⽤用套件
25
每新增⼀一個套件,都
要在兩個地⽅方宣告不會
很⿇麻煩嗎?
可以npm install

後就直接使⽤用嗎?
GULP-LOAD-PLUGINS
26
偵測 package.json dependencies,並⾃自動幫忙載⼊入套件
1. 載⼊入並初始化 load-plguins
2. 改⽤用 load-plguins 寫法
範例:修改 scripts 任務的寫法
27
好棒棒
–中國諺語
「三個臭⽪皮匠,勝過⼀一個諸葛亮」
28
多試試各種套件組合

組出符合你需求的任務
接下來?
29
MORE REFERENCES
• gulp github - gulp recipes

- gulp repository 在 github 上分享的各種情況的實作

- 例如:統⼀一處理不同任務的錯誤訊息
30
• 研究其他⼤大⼤大的 gulpfile.js

- google/web-starter-kit

- g0v/g0v.tw
• appleboy - Automating your workflow with Gulp.js
31
THANK YOU

More Related Content

PDF
Npm 套件管理 & 常用開發工具介紹
wantingj
 
PDF
Node.js從無到有 基本課程
Simon Su
 
PDF
Gulp.js 自動化前端任務流程
洧杰 廖
 
PPTX
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
Will Huang
 
PDF
React.js what do you really mean?
昱安 周
 
PPTX
快快樂樂學 Angular 2 開發框架
Will Huang
 
PPTX
使用 Visual Studio Code 建構 JavaScript 應用程式
Will Huang
 
PPTX
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
Will Huang
 
Npm 套件管理 & 常用開發工具介紹
wantingj
 
Node.js從無到有 基本課程
Simon Su
 
Gulp.js 自動化前端任務流程
洧杰 廖
 
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
Will Huang
 
React.js what do you really mean?
昱安 周
 
快快樂樂學 Angular 2 開發框架
Will Huang
 
使用 Visual Studio Code 建構 JavaScript 應用程式
Will Huang
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
Will Huang
 

What's hot (20)

PPTX
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
Will Huang
 
PDF
NodeJS基礎教學&簡介
GO LL
 
PDF
webpack 入門
Anna Su
 
PPTX
SQL Server 資料庫版本控管
Will Huang
 
PPTX
前端框架發展
Chi-wen Sun
 
PPTX
Angular 4 新手入門攻略完全制霸
Will Huang
 
PPTX
前端各階段工作
Chi-wen Sun
 
PPTX
ASP.NET Core 6.0 全新功能探索
Will Huang
 
PPTX
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格
Will Huang
 
PPTX
Nuget介紹- 如何使用和建立自己的package
Alan Tsai
 
PPTX
RxJS 6 新手入門
Will Huang
 
PDF
Honey's Data Dinner#7 webpack 包達人(入門)
beehivedata
 
PPTX
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
Will Huang
 
PDF
從軟體開發角度
談 Docker 的應用
謝 宗穎
 
PPTX
DEV305 - ASP.NET 5 開發攻略
Will Huang
 
PPTX
使用 ASP.NET 5 實戰開發雲端應用程式
Will Huang
 
PPTX
Frontend Devops at Cloudinsight
Yan Wang
 
PPTX
ASP.NET 5 的創新與變革
Will Huang
 
PDF
前端MVVM框架安全
Borg Han
 
PDF
學好 node.js 不可不知的事
Ben Lue
 
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
Will Huang
 
NodeJS基礎教學&簡介
GO LL
 
webpack 入門
Anna Su
 
SQL Server 資料庫版本控管
Will Huang
 
前端框架發展
Chi-wen Sun
 
Angular 4 新手入門攻略完全制霸
Will Huang
 
前端各階段工作
Chi-wen Sun
 
ASP.NET Core 6.0 全新功能探索
Will Huang
 
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格
Will Huang
 
Nuget介紹- 如何使用和建立自己的package
Alan Tsai
 
RxJS 6 新手入門
Will Huang
 
Honey's Data Dinner#7 webpack 包達人(入門)
beehivedata
 
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
Will Huang
 
從軟體開發角度
談 Docker 的應用
謝 宗穎
 
DEV305 - ASP.NET 5 開發攻略
Will Huang
 
使用 ASP.NET 5 實戰開發雲端應用程式
Will Huang
 
Frontend Devops at Cloudinsight
Yan Wang
 
ASP.NET 5 的創新與變革
Will Huang
 
前端MVVM框架安全
Borg Han
 
學好 node.js 不可不知的事
Ben Lue
 
Ad

Viewers also liked (20)

PDF
Automating your workflow with Gulp.js
Bo-Yi Wu
 
PDF
Show Me The Page - 介紹 Critical rendering path
Yvonne Yu
 
PDF
一拳前端考題
洧杰 廖
 
PDF
自從學會Sass / Compass後,考試都考100分!
洧杰 廖
 
PDF
漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例
Kuro Hsu
 
PPTX
Sencha ExtJs Learning Part 1 - Layout And Container in Sencha ExtJs - By Irfa...
Irfan Maulana
 
PPTX
Sencha ExtJs Learning Part 2 - MVC And MVVM Architecture in ExtJs [ENGLISH]
Irfan Maulana
 
PDF
我與編輯器
Yvonne Yu
 
PDF
如何逐步提升CSS的可利用性、模組化
洧杰 廖
 
PPTX
Gulp
漢麟 王
 
PDF
Flux架構+ReactJS開發實作
Laura Lee
 
PDF
GSS Frontend Project Management
Laura Lee
 
PDF
Ext js 6
Manav Gupta
 
PPTX
Journey To The Front End World - Part2 - The Cosmetic
Irfan Maulana
 
PDF
conjoon - The Open Source Webmail Client
Thorsten Suckow-Homberg
 
PDF
現代化網頁基礎排版技術
洧杰 廖
 
PPTX
Bliblidotcom - SASS Introduction
Irfan Maulana
 
PPTX
那些年,我們曾經做過的wireframe、mockup、prototype
洧杰 廖
 
PDF
前端開發流程分享
洧杰 廖
 
PDF
打造網站親和力
Yvonne Yu
 
Automating your workflow with Gulp.js
Bo-Yi Wu
 
Show Me The Page - 介紹 Critical rendering path
Yvonne Yu
 
一拳前端考題
洧杰 廖
 
自從學會Sass / Compass後,考試都考100分!
洧杰 廖
 
漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例
Kuro Hsu
 
Sencha ExtJs Learning Part 1 - Layout And Container in Sencha ExtJs - By Irfa...
Irfan Maulana
 
Sencha ExtJs Learning Part 2 - MVC And MVVM Architecture in ExtJs [ENGLISH]
Irfan Maulana
 
我與編輯器
Yvonne Yu
 
如何逐步提升CSS的可利用性、模組化
洧杰 廖
 
Flux架構+ReactJS開發實作
Laura Lee
 
GSS Frontend Project Management
Laura Lee
 
Ext js 6
Manav Gupta
 
Journey To The Front End World - Part2 - The Cosmetic
Irfan Maulana
 
conjoon - The Open Source Webmail Client
Thorsten Suckow-Homberg
 
現代化網頁基礎排版技術
洧杰 廖
 
Bliblidotcom - SASS Introduction
Irfan Maulana
 
那些年,我們曾經做過的wireframe、mockup、prototype
洧杰 廖
 
前端開發流程分享
洧杰 廖
 
打造網站親和力
Yvonne Yu
 
Ad

Similar to CP 值很高的 Gulp (20)

PPTX
Vic weekly learning_20160504
LearningTech
 
PPTX
前端自動化工具
國昭 張
 
PPTX
ASP.NET MVC 6 新功能探索
Will Huang
 
PPTX
scriptcs 簡介
Huan-Lin Tsai
 
PPTX
Npm node.js的套件管理程式
Chuyi Huang
 
PPTX
Asp.net mvc 6 新功能初探
Gelis Wu
 
PPTX
tengine(nginx with lua ) develop at 2013
druggo2
 
PPT
使用Nginx轻松实现开源负载均衡
cachowu
 
PDF
以Code igniter為基礎的網頁前端程式設計
Amigo 陳兆祥
 
PPTX
[OSDC12]相依性管理 - 以Ruby開發為例
YC Ling
 
PDF
Grunt
lylijincheng
 
PDF
课题三:Nginx基础知识
Liu Allen
 
DOC
Nagios的安装部署和与cacti的整合(linuxtone)
Yiwei Ma
 
PDF
北護樂學程式冬令營 2017
Hamilton Wong
 
DOC
Apache+php+mysql在Linux下的安装与配置
wensheng wei
 
PDF
DAE 新变化介绍
Tianwei Liu
 
PDF
icecream / icecc:分散式編譯系統簡介
Kito Cheng
 
PPTX
这年头,你只需要懂Node webkit
LainZQ
 
PPTX
使用Samba提升linux平台开发效率
Zhen Li
 
PPTX
使用Samba提升linux平台开发效率
Zhen Li
 
Vic weekly learning_20160504
LearningTech
 
前端自動化工具
國昭 張
 
ASP.NET MVC 6 新功能探索
Will Huang
 
scriptcs 簡介
Huan-Lin Tsai
 
Npm node.js的套件管理程式
Chuyi Huang
 
Asp.net mvc 6 新功能初探
Gelis Wu
 
tengine(nginx with lua ) develop at 2013
druggo2
 
使用Nginx轻松实现开源负载均衡
cachowu
 
以Code igniter為基礎的網頁前端程式設計
Amigo 陳兆祥
 
[OSDC12]相依性管理 - 以Ruby開發為例
YC Ling
 
Grunt
lylijincheng
 
课题三:Nginx基础知识
Liu Allen
 
Nagios的安装部署和与cacti的整合(linuxtone)
Yiwei Ma
 
北護樂學程式冬令營 2017
Hamilton Wong
 
Apache+php+mysql在Linux下的安装与配置
wensheng wei
 
DAE 新变化介绍
Tianwei Liu
 
icecream / icecc:分散式編譯系統簡介
Kito Cheng
 
这年头,你只需要懂Node webkit
LainZQ
 
使用Samba提升linux平台开发效率
Zhen Li
 
使用Samba提升linux平台开发效率
Zhen Li
 

CP 值很高的 Gulp