前端自動化:Gulp 學習路程
本篇目標:
- 初步認識 Gulp (安裝與使用)
- 建立前端自動化安裝環境
- 自訂屬於自己的 Gulp 開發環境
初步認識 Gulp:
Gulp 為 Node.js 的套件,可以自訂屬於自己的前端自動化環境,簡單點說可以幫你一次解決:
- Sass、Less 自動編譯為 Css
- 自動加入 “瀏覽器前綴” 給你的 Css 屬性
- 自動幫你編譯 Jade 為 Html
- 壓縮圖片
- 打包壓縮 CSS 與 JS
- 瀏覽器自動重新整理
- …..
以上這些可能已經能省下許多 開發前、開發中、開發後 時特別需要留意花時間的動作
凡事需要做兩次以上的事物,都可以有自動化的價值
讓我們繼續往下看~~
安裝 Gulp 環境:
gulp 為 Node.js 的套件,所以安裝 gulp 前請先安裝 Node.js
1. 安裝 node
sudo apt-get install node
2. 安裝 Npm(Node 模組套件管理器)
sudo apt-get install Npm
3. 使用 Npm 全域安裝 Gulp
npm install -g gulp
以上環境建制完畢~~
建立 Gulp 專案:
1. 建立一個專案且切換到此目錄底下 (此以 gulp-project 為專案名稱)
mkdir gulp-project
cd gulp-project
2. Npm 初始化此專案 產生 package.json 的檔案
npm init
此時 Npm 詢問你一下資訊 如: 專案名稱 、 專案描述 、 作者 、 版本…等等之類有關專案敘述,你也可以不輸入直接 “enter” 按到底~
產出的 package.json 檔案內容如下:
{
"name": "gulp-project",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
順便一提:
接下來在此專案安裝任何 module 時,package.json 都會進行紀錄: 你可以把此專案下的 package.json 複製到其他專案,輸入下方指令今行安裝:
npm instll
3. 在此專案下安裝 Gulp
npm install --save-dev gulp
4.專安目錄下建立 gulpfile.js 檔案
touch gulpfile.js
到此步驟已經算是完成了~再來將針對 gulpfile.js 的檔案進行 編譯,來運行我們需要 Gulp 來幫我們運作的事情
另外安裝完的 gulp 或是其他它使用 npm instll 安裝的模組,皆會被放置在 node_modules 目錄底下
第一個 gulp 程式
接下來我們直接編譯 gulpfile.js 在進行初步的了解
建立變數使用 require 引入 gulp plugin
var gulp = require('gulp');
使用 task(name,fn) 來定義任務名稱何執行任務的內容
gulp.task('default', function () {
console.log('執行 default 的任務');
});
gulp.task('word', function () {
console.log('執行 word 的任務');
});
儲存後~接著來執行看看~
執行指定任務
在專案目錄底下輸入:
gulp
執行結果;
[21:55:19] Using gulpfile /var/www/gulp-project/gulpfile.js
[21:55:19] Starting 'default'...
執行 default 的任務
[21:55:19] Finished 'default' after 95 μs
在專案目錄底下輸入:
gulp world
執行結果;
[22:00:08] Using gulpfile /var/www/gulp-project/gulpfile.js
[22:00:08] Starting 'word'...
執行 word 的任務
[22:00:08] Finished 'word' after 103 μs
上面實做結果可得知 Gulp 最 basic 的運行與使方式
另外你必須要知道:
.task(‘defalut’,function()) 中的 ‘defalue’ 的任務名稱指的就是 ‘Gulp’ 本身
.task(‘word’,function()) 而自己定義的任務名稱使用時前面必須加上 ‘gulp’ 如 ‘gulp word’
使用 Gulp 相關模組來達成前端自動化
再來我們需要做的是就是來撰寫自己的 task 來執行我們想要進行自動化的功能,好運的是大部分的功能都已經被許多牛人和團隊寫成模組,釋出在網路上~如何調用和使用都有個別的說明文件~ 你可以透過 gulp 作為關鍵字去收尋你想自動完成的功能
在這裡我使用 gulp-sass 來把 sass 編譯為 css 為例:
安裝 gulp-sass
npm install gulp-sass --save-dev
建立變數使用 require 引入 gulp-sass plugin
var gulp = require('gulp');
var sass = require('gulp-sass'); //引入 gulp-sass plugin
建立 sass的任務
gulp.task('sass', function() {
})
使用 gulp.src 來指定事件目錄或檔案
gulp.task('sass', function() {
gulp.src('sass/style.scss') //指定目錄 sass底下的 style.scss檔案
})
使用 .pipe 進行串流
gulp.task('sass', function() {
gulp.src('sass/style.scss')
.pipe(sass()) //使用 pipe 將檔案 串接給 gulp-sass 進行編譯
})
使用 gulp.dest將處理過後的檔案匯出
gulp.task('sass', function() {
gulp.src('sass/style.scss')
.pipe(sass())
.pipe(gulp.dest('css')); //將匯出的檔案輸出在 css 目錄底下
})
完成後在目錄底下建立 sass 資料夾與底下 style.scss 進行編譯
sass/style.scss
body{
# header{
background:#000000;
}
}
執行 sass task 進行編譯
輸入指令
gulp sass
執行結果
[22:45:31] Using gulpfile /var/www/gulp-project/gulpfile.js
[22:45:31] Starting 'sass'...
[22:45:31] Finished 'sass' after 11 ms
執行完後 style.scss 會被編譯成 style.css 至 css 的目錄底下
css/style.css
body # header{
background:#000000;
}
當然~ gulp-sass 的設定絕對不只這些,在此只先完成它最根本的運作
結語:
先介紹到這裡,相信閱讀完後應該能對 Gulp 有初步的認識,也應該有稍微體驗到 Gulp 的強大和帶來的方便,後續會繼續在增加 Gulp 使用上的經驗和功能方面的文章,再與大家分享~
取之於網路,用之餘網路