摘要:這些任務(wù)包括但不限于將源代碼編譯為二進(jìn)制文件打包二進(jìn)制文件運(yùn)行測試用例發(fā)布到線上環(huán)境添加文檔或發(fā)行注釋為什么很重要呢,因?yàn)樗芄?jié)省程序員的時(shí)間。
Update: 別用 Grunt 了,用 Gulp !拜拜。
(原文發(fā)表于我的個(gè)人博客 http://frankfang.com/2013/12/29/grunt-is-awesome/ ,如有錯(cuò)
誤,還請賜教)
在生產(chǎn)環(huán)境中使用 Grunt 已經(jīng)有兩個(gè)多月了,是時(shí)候?qū)懸恍w會了。目前能在網(wǎng)上搜到不少入門教程,我這篇就不再贅述 使用 Grunt 的目的、安裝過程和配置方法等了,主要講一些實(shí)際工作時(shí)的思考。另外還涉及到 Bower 和 Yeoman。
Build AutomationBuild Automation 就是「構(gòu)建自動化」,Wiki 上的解釋是
構(gòu)建自動化是將軟件開發(fā)人員日常工作中的一系列任務(wù)自動執(zhí)行。這些任務(wù)包括但不限于
將源代碼編譯為二進(jìn)制文件
打包二進(jìn)制文件
運(yùn)行測試用例
發(fā)布到線上環(huán)境
添加文檔或發(fā)行注釋
為什么 BA 很重要呢,因?yàn)樗芄?jié)省程序員的時(shí)間。重復(fù)性、可執(zhí)行的任務(wù),本應(yīng)交給機(jī)器來完成。省時(shí)省力,多好。
P.S. 其實(shí) BA 不一定總是好的,見下圖
用 Grunt 之前BA 具體到前端開發(fā),就包括但不限于以下任務(wù)
將 LESS/SCSS 和 CoffeeScript 編譯為 CSS 和 JS
將源代碼(JS、CSS、HTML)和圖片壓縮(以節(jié)省用戶帶寬)
打包或合并資源文件
對資源文件做版本控制
運(yùn)行測試用例
發(fā)布到線上環(huán)境
在 Grunt 之前,我們一般是怎么完成這些任務(wù)的呢?我們用了類似的自動構(gòu)建工具,如 Ant 或 Make。說實(shí)話,Grunt 跟這些工具的區(qū)別可能僅僅是語言的選擇不同,但這正是吸引我們前端開發(fā)者的一點(diǎn)——使用 JS 作為開發(fā)語言。
Ant 我真是從沒用過, 因?yàn)槲艺娴目床欢?XML(其實(shí)我是忠實(shí)的 Java 黑你應(yīng)該知道吧)。Makefile,總感覺是 C/C++ 程序員用的東西,也無愛。
感謝 Grunt,我不用去學(xué)習(xí) Ant 和 Make,就可以按我的想法來做自動構(gòu)建了。
Yeoman 和 Bower一般來說,用 Grunt 的同時(shí)都會配合著 Yeoman 和 Bower 來用。我先吐槽下這倆貨。
Bower 很好用,能節(jié)省我們寶貴的人生。不過 bower list --path 有時(shí)候不能把文件的路徑打印完整,每次都要我費(fèi)勁去翻目錄,因?yàn)檫@些組件的開發(fā)者沒有在 .bower.json 里添加 main 文件的配置,差評。
Yeoman 一般,能幫你寫好初始模板、Gruntfile 和 Bower,但是有兩個(gè)缺點(diǎn)
一、臃腫
流行的 generator 添加了過多的任務(wù)而顯得十分臃腫!以 generator-backbone 為例,它添加了 25 項(xiàng) Grunt 任務(wù),其中 9 項(xiàng)我不怎么想用,最氣人的是它還有一個(gè) compass 任務(wù),要運(yùn)行這個(gè)任務(wù)我需要事先安裝 ruby!你敢再多依賴點(diǎn)兒別的東西嗎???
二、可定制化差
我想改變一下 generator-backbone 里面的目錄結(jié)構(gòu),廢老大力氣了。牽一發(fā)而動全身,而且有些任務(wù)插件又沒有文檔,改起來提心吊膽的。
所以目前我還是沒有直接使用 Yeoman,只是借鑒了里面的 Gruntfile 的寫法。并且在嘗試寫自己的 generator。
用 Grunt 之后我用 Grunt 做了哪些事呢?其實(shí)主要是兩方面:加快開發(fā)和自動構(gòu)建。
加快開發(fā)主要使用了 watch 任務(wù)。
由于我們在項(xiàng)目里采用了 LESS,所以我使用 Grunt 對其進(jìn)行實(shí)時(shí)編譯。
Live Reload 功能我并沒有使用,它很煩,經(jīng)常在我不想刷新頁面的時(shí)候幫我刷新了。而且速度也不夠快。
另外我讓 Grunt 實(shí)時(shí)運(yùn)行單元測試。
自動構(gòu)建這個(gè)過程主要交給 usemin 任務(wù)來完成。
它會合并文件、壓縮文件, 以及加版本信息。
我們的 git commit 即可觸發(fā) CI 來執(zhí)行 Grunt 命令,然后將其發(fā)布到線上環(huán)境。
Workflow這就是傳說中的 Workflow 啊,將我從繁雜的瑣事中解救出來了哇,有一種「世界如此美妙」的感覺!
簡單來說,只要在工作中遇到了 over and over again 的任務(wù),我就會考慮把它放入 Grunt 中,作為 Workflow 的一個(gè)步驟。
這樣做的好處是什么呢?只有一個(gè):把本該讓機(jī)器去做的事交給機(jī)器去做。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/87447.html
摘要:前言已爛想來大家對自動化構(gòu)建工具已經(jīng)不陌生了,自動化構(gòu)建工具可以幫開發(fā)者省去很多重復(fù)勞動比如語法糾錯(cuò)文件打包文件操作,合并壓縮等等常用的自動化構(gòu)建工具有等等,這些構(gòu)建工具核心都是依賴第三方插件,通過顆粒化任務(wù),再將這些任務(wù)按照合適的方式進(jìn)行 前言 F5已爛 showImg(https://segmentfault.com/img/bVyS47); 想來大家對自動化構(gòu)建工具已經(jīng)不陌生了,...
摘要:前言已爛想來大家對自動化構(gòu)建工具已經(jīng)不陌生了,自動化構(gòu)建工具可以幫開發(fā)者省去很多重復(fù)勞動比如語法糾錯(cuò)文件打包文件操作,合并壓縮等等常用的自動化構(gòu)建工具有等等,這些構(gòu)建工具核心都是依賴第三方插件,通過顆?;蝿?wù),再將這些任務(wù)按照合適的方式進(jìn)行 前言 F5已爛 showImg(https://segmentfault.com/img/bVyS47); 想來大家對自動化構(gòu)建工具已經(jīng)不陌生了,...
摘要:前言已爛想來大家對自動化構(gòu)建工具已經(jīng)不陌生了,自動化構(gòu)建工具可以幫開發(fā)者省去很多重復(fù)勞動比如語法糾錯(cuò)文件打包文件操作,合并壓縮等等常用的自動化構(gòu)建工具有等等,這些構(gòu)建工具核心都是依賴第三方插件,通過顆?;蝿?wù),再將這些任務(wù)按照合適的方式進(jìn)行 前言 F5已爛 showImg(https://segmentfault.com/img/bVyS47); 想來大家對自動化構(gòu)建工具已經(jīng)不陌生了,...
摘要:不是一下子能看完綜合使用編程是一番怎樣的體驗(yàn)學(xué)習(xí)筆記網(wǎng)站前端開發(fā)基礎(chǔ)算法題如何優(yōu)雅地使用如何優(yōu)雅地使用零度博客碼農(nóng)網(wǎng)伯樂在線什么是頁面渲染國外先更到這,還有太多網(wǎng)址,先歸類一下再補(bǔ)充。 最近在復(fù)習(xí)JavaScript知識時(shí)遇到以前就不懂的閉包、上下文,雖然比以前理解深了一點(diǎn),但還是懵,想緩一下。。就去看了其他。。把Git、Grunt、Gulp、jQuery、jQuery UI、Reac...
閱讀 1929·2021-09-22 10:02
閱讀 2009·2021-09-02 15:40
閱讀 2903·2019-08-30 15:55
閱讀 2373·2019-08-30 15:44
閱讀 3652·2019-08-30 13:18
閱讀 3285·2019-08-30 11:00
閱讀 2021·2019-08-29 16:57
閱讀 624·2019-08-29 16:41