SlideShare a Scribd company logo
Gulp.js
The streaming build system
Build World
• make : 傳統Unix建置工具
• Ant->Maven->Gradle : Java世界
• Grunt->Gulp : Javascript世界
Why Build Tools?
• 專案越大,越多版本,在部署前就越多調
整的步驟,針對每個不同版本去做手動調
整不但繁瑣費時而且容易出錯
• 透過Build Tools,可以針對不同版本達到輕
鬆的”一鍵部署”,減少部署所需時間與出錯
率
What is Gulp?
(1) Npm 套件
(2) 用來執行自動化的建置工作
(3) 為了改良Grunt而生
Grunt vs Gulp
Grunt Gulp
1. Focus on config
2. 許多內建常用task
3. synchronous,task by
task
1. Focus on code
2. 幾乎都是社群外掛
3. asynchronous執行,
每個task可以同時執
行
How do we use Gulp?
將繁瑣的建置流程透過程式來自動化執行
包含:
(1) 壓縮CSS/JS
(2) 將SASS/LESS編譯成CSS
(3) 壓縮圖片
(4) 將CSS加入前綴
…
以及透過Gulp的外掛可以自動更新Browser內容,
增加開發效率
安裝Gulp
安裝 gulp command,這樣才可以在command
line使用
gulp$ npm install gulp -g
在專案目錄下設定gulp環境
$ npm init
如果專案目錄底下沒有package.json,則先初始化
$ npm install gulp --save-dev
安裝gulp套件內容於目前專案目錄
建立gulpfile.js
var gulp = require('gulp');
gulp.task('default', function() {
console.log("I have configured a gulpfile");
});
在專案目錄底下建立一個gulpfile.js,並執行gulp,
這時候應該會印出” I have configured a gulpfile”
目前專案需求
(1) 替換SERVER_URL
(2) 自動上傳至melon
將需求流程化
(1) 將專案內容複製一份到dist,方便修改
(2) 替換SERVER_URL
(3) 壓縮專案
(4) 刪除Server上舊的專案
(5) 上傳zip
(6) 解壓縮zip
(7) 刪除zip
安裝所需的Gulp套件
• gulp-html-replace (替換SERVER_URL)
• gulp-zip (壓縮zip)
• gulp-ssh (ssh連server)
• gulp-clean (清dist資料夾)
• gulp-run-sequence (確保task依序執行)
$ npm install –save-dev gulp-html-replace gulp-zip
gulp-ssh gulp-clean gulp-run-sequence
實戰
• 套用於 angular-standardweb
• 套用於 grails-statndardplatform
增加安全性
• 因為ssh的資料是機密,最好另外寫在一個
config,並且不上版本控管
Gulp 與 IntelliJ
Gulp 步驟複習
(1) npm init,建立npm套件環境
(2) 透過npm install安裝 gulp與gulp相關plugin
(3) 建立並撰寫gulpfile.js
(4) 利用gulp command執行task
第一次使用Gulp Deploy
(1) (sudo) npm install -g gulp
(2) npm install
(3) 跟UL要sshConfig.json,並放在專案根目錄
(4) gulp deploy
其他Grails專案套用目前設定
(1) 複製stanrd-platform的package.json與
gulpfile.js
(2) npm install
(3) 修改gulpfile.js內的warName
(4) 在.gitigrnoe加入 sshConfig.json
(5) 加入sshConfig.json於專案根目錄
(6) gulp deploy
Gulp 語法複習
- gulp.task(‘taskName’, func)
- gulp.task(‘taskName’, [task1, task2..], func)
- gulp.src(‘path’)
- gulp.pipe(…handle stream)
- gulp.dest(output path)
“正常”的部署流程 Continuous
Integration
Browse Sync 同步更新
$ npm install -g browser-sync
$ browser-sync start --server –files "**"
一但html或css更動,會自動更新web
參考資料
• http://tagtree.tv/gulp
• http://www.cnblogs.com/woleicom/p/428593
0.html

More Related Content

Similar to Gulp

快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架
Will Huang
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具
國昭 張
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationnetdbncku
 
测试驱动的前端开发初探
测试驱动的前端开发初探测试驱动的前端开发初探
测试驱动的前端开发初探
hua qiu
 
Test driven-frontend-develop
Test driven-frontend-developTest driven-frontend-develop
Test driven-frontend-developfangdeng
 
2, installation
2, installation2, installation
2, installation
ted-xu
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩Wen-Tien Chang
 
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
Shengyou Fan
 
Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
National Cheng Kung University
 
Html5移动网站开发实践
Html5移动网站开发实践Html5移动网站开发实践
Html5移动网站开发实践
Web Zhao
 
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
Amigo 陳兆祥
 
Ian 20150515 grunt
Ian 20150515 gruntIan 20150515 grunt
Ian 20150515 grunt
LearningTech
 
用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式
Bo-Yi Wu
 
持续集成中的反模式
持续集成中的反模式持续集成中的反模式
持续集成中的反模式
Kai Feng Zhang
 
Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹
wantingj
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swttka
 
Android裝置開發過程的軟硬整合關鍵及挑戰
Android裝置開發過程的軟硬整合關鍵及挑戰Android裝置開發過程的軟硬整合關鍵及挑戰
Android裝置開發過程的軟硬整合關鍵及挑戰
tick
 
Git入门与实践
Git入门与实践Git入门与实践
Git入门与实践
LC2009
 
使用 Load Balancer 與 Redis 部署 LAMP Server 高併發架構 - Global Azure Taiwan 20200425 ...
使用 Load Balancer 與 Redis 部署 LAMP Server 高併發架構 - Global Azure Taiwan 20200425 ...使用 Load Balancer 與 Redis 部署 LAMP Server 高併發架構 - Global Azure Taiwan 20200425 ...
使用 Load Balancer 與 Redis 部署 LAMP Server 高併發架構 - Global Azure Taiwan 20200425 ...
Laird Cheng
 
Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路
AgileCommunity
 

Similar to Gulp (20)

快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
测试驱动的前端开发初探
测试驱动的前端开发初探测试驱动的前端开发初探
测试驱动的前端开发初探
 
Test driven-frontend-develop
Test driven-frontend-developTest driven-frontend-develop
Test driven-frontend-develop
 
2, installation
2, installation2, installation
2, installation
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
 
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
 
Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
 
Html5移动网站开发实践
Html5移动网站开发实践Html5移动网站开发实践
Html5移动网站开发实践
 
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
 
Ian 20150515 grunt
Ian 20150515 gruntIan 20150515 grunt
Ian 20150515 grunt
 
用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式
 
持续集成中的反模式
持续集成中的反模式持续集成中的反模式
持续集成中的反模式
 
Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt
 
Android裝置開發過程的軟硬整合關鍵及挑戰
Android裝置開發過程的軟硬整合關鍵及挑戰Android裝置開發過程的軟硬整合關鍵及挑戰
Android裝置開發過程的軟硬整合關鍵及挑戰
 
Git入门与实践
Git入门与实践Git入门与实践
Git入门与实践
 
使用 Load Balancer 與 Redis 部署 LAMP Server 高併發架構 - Global Azure Taiwan 20200425 ...
使用 Load Balancer 與 Redis 部署 LAMP Server 高併發架構 - Global Azure Taiwan 20200425 ...使用 Load Balancer 與 Redis 部署 LAMP Server 高併發架構 - Global Azure Taiwan 20200425 ...
使用 Load Balancer 與 Redis 部署 LAMP Server 高併發架構 - Global Azure Taiwan 20200425 ...
 
Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路
 

Gulp