之前六角學院出了一堂課程:使用 gulp 進行網頁前端自動化,相當推薦!

說真的,在畢業前我就大概知道gulp 的大名,自己的印象就是類似前端的工具……但始終沒有特別著墨這一塊,直到我最近關注六角學院出了這門課,恰巧手上又有一些閒錢,就發憤買了這門課,藉此做為好好學習gulp的機會和理由。

Gulp 是甚麼?

Gulp 在我目前的使用與理解上就是一個可以將前端工作流程(前端工程)給與"自動化"的一項工具,藉由"gulpfile.js" 定義出各式各樣的"工作任務",加上gulp 的一些配合外掛與套件,可以進行壓縮js 和css 、scss 或搬移檔案的動作。詳情可以請問 wiki 大神甚麼是gulp

話不多說,先做一個簡單的範例吧,這是一個可以把html copy 到指定地方的工作任務

PS: 請先預備好工作環境,npm 還有souce 資料夾,(當然你也可以定義您的資料夾名稱)等,如果可以,再多裝個yarn (比npm還快的npm,但不是npm 請看介紹阿 npm 只是拿來安裝yarn 的XD ) 先npm install 或者yarn install  之後在資料夾裡新增一個新檔案:gulpfile.js

說明:

接下來使用gulp 後面接你所定義的task name 即可執行,如上範例 就是在CMD Key “gulp copyHTML” ,就可以將source 資料夾裡所有.html 檔名的檔案搬到 public資料夾下(如果沒有public 他會幫你建一個!! )。

如果你只想key gulp 就可以執行也可,只要在gulpfile.js 定義gulp.task(‘default’, [/後面接task 陣列/]); 就可以,如上所示就是 gulp.task(‘default’, [“copyHTML”]);

當然啦,gulp 如果只能拿來做搬檔案,其實用Python 也可以阿! 幹嘛需要用gulp?  gulp 真正的妙處是在可以利用各式各樣的外掛套件 多樣化並豐富前端工作,像是gulp-sass 可以將sass的檔案轉成css、用gulp-concat合併css 和js ,甚至也可以利用套件壓縮css 和js 的檔案大小、gulp-jade 更能將 jade 的檔案轉譯成.html,別在這裡問我jade 是甚麼? jade 就是 html 前置的樣板語言,和scss/sass 之於css 有點像,不知道jade 是甚麼請由此進。 對了 如果你直接在google 搜尋打"jade" 會搜尋到"玉",因為它改名為 “pug” 了阿XDDDD

如果很認真沒錢的同學,歡迎去自行google 搜尋 “gulp 教學”,和我一同進入 gulp 的世界,如果有點閒錢,還不用1000元,歡迎來六角學院和我一起當同學喔! 老師教得都很詳細、而且每個禮拜有問答會,可以把你碰到的問題提出來(不過或許是工程師性格使然,我都沒有問甚麼問題,自行google 比較多……)

為甚麼用Gulp 來做履歷?

a.工程師就應該要有不被104 和其他找工作網站所限制履歷的權利阿(誤?!

b.工程師就應該要有自己的工程師履歷阿,像我很喜歡和崇拜的Robby Leonardi 大神的履歷(大誤?!

好啦,因為六角學院的老師在課程上有介紹了gulp-data 的套件,我個人相當喜歡,可以說是愛上這個東西,可以先將預先寫好的json 檔串接,傳到前端的jade 去渲染出html 。 這真得是很酷! 另外,近來在許多的研討會或課程中老師或講者很多都用所謂的json 來顯示自己是誰,於是讓我就有這個用gulp 來做履歷的project 和 idea。並且我有著後端工程師的一個基本素養,未來的作品和經歷是會越來越多的,如果使用寫死的"html"呈現自己的履歷實在是"太白癡"? 重複的html code 太多,為何不用jade 的each 呢?

做法與想法:

我是個很懶的後端工程師,所以我並沒有想要像Robby 大神用畫圖阿、客製化強大的css 和js 去製作他的履歷(覺得他也很用心的花很多時間),當然也是我目前還沒達成這樣的境界?!(希望未來可以達到 😎 ) ,所以我的頁面很簡單,就是一些自己寫的一些小js 和 scss 檔(用gulp 把scss 轉為css), 然後用gulp-concat 和main-bower-files 這個可以將bower 和 gulp 對接的工具將bower 引入的"boostrap"、“jquery”、“animate.css”、“font-awesome”、“wow.js” 與我自己客製的包起來並壓縮。

最後,用gulp-data 和jade 語法相互配合把自己的履歷網頁刻出來,在這裡,我只想示範 gulp-data 的那段code 而已

接下來,就是jade 檔的事情了,想辦法將收到的data 整理出來寫在網頁上, 如果要看code 請至此

遇上gulp-ghPages 的雷

在 gulp 的課程中,講師有講到 gulp-ghPages 這個外掛,這讓我的眼睛為之一亮,因為我只要用gulp 就能簡單部屬我的履歷,就不用打一堆git 指令之類bla bla 的 讓開發與發布可以分得乾乾淨淨的,附帶一提,gh-page 就是github 可以提供給"靜態網頁"的空間。 可以做為一個簡單的預覽。

然而,我卻遇上了"fatal: could not read Username for ‘https://github.com’: "  ,或許是因為我不止開發了這個resume 的小專案,另外我還有開發了一些東西,我使用的是 vs code,在git global的設定上,好像我沒有設定github 的設定,記得每一次我在git-push 都會出現視窗問我github 的帳號與密碼……。 呵呵 卡關了一陣子….最後Goolge 到這個解答 。雖然不是gulp-ghpage的關係,但其實狀況有點像,大概都是git 的設定上問題,看著他們的討論串,看到這一段

1
2
3
4
The detail step:
 1. go to your local git project directory, open ".git/config" file and delete the "[remote "origin"]" section.
 2. go to git bash and input "git remote add origin https://{username}:{password}@github.com/{username}/project.git"
 3. input git push to check if it works.

意思是說,

首先第一步,將.git/config檔案裡有關於 [remote “origin”] 的區塊砍掉(windows 用戶請將資料夾選項->顯示隱藏的資料夾、檔案和磁碟機,你就會看到.git 資料夾了 )

第二步 key 上 “git remote add origin https://{username}:{password}@github.com/{username}/project.git” (username和password 是你的github 的username 和password 以及project 是你目前所做的project name )

當然啦,我也是可以去修改git 的設定,只是小弟搜尋了很久都找不太到怎麼修改(有點忘了),所以就換了這個奇怪解法。

心得與收穫

終於,歷經了快一個月(含學習時間)?! 將這個夢想中我想做的side project “工程師履歷"做出來,之後除非是要新增甚麼區塊,總之我只要修改 我設計的 json 檔 and gulp 和 gulp deploy 就可以自動化我的履歷拉(尤其對於作品和經歷、專長等大大有幫助 )! 這大大方便以後的履歷更新。 如果各位有關於此類相關更好的建議或做法歡迎再下面與我討論XD

小君曰:人生中能做出多少個 side project 呢?