[Cordova] hooks功能-檢查、壓縮、合併
最近才得知cordova可以在編譯輸出前做一些事情
這個地方叫做hooks,可以到官網查詢
預計要來做幾件事情
1.JSHint
2.Concat files
3.Uglify
JSHint
檢查JS語法,這個會放在before_prepare,要讓錯誤扼殺在成長之前XD
所以我們要建立一個檔案,010_jshint.js
hooks的運作機制,會根據js前面的號碼作為排序,來依序執行檔案
有多個動作時,記得要確認一下要執行的順序為何
Concat files
撰寫時,我們會將js、css根據模組或功能等需求而分開來
等到我們要執行時,為了效能的優化,就會將檔案進行合併
這個動作會放在after_prepare下,這邊也要建立一個檔案012_concat_files_by_index.js
這功能主要是將index.html中所宣告引用的js、css進行合併,所以index.html還是要記得先加上
做完這段以後可以發現到,index.html中已經被合併的檔案tag還是存在,那接著我們就要對於這些被合併的tag換成最後輸出的檔案
那這邊需要先對index.html中加上一些東西,才能讓接下來的功能順利進行,可以參考node-useref
1 | <!-- build:css css/app.min.css --> |
一樣在after_prepare中,加上015_prepare_index.js
Uglify
這是裡面最簡單的好做到的功能XD,只要下個指令就可以
會自動在after_prepare下增加一個uglify.js
檔案,因為前面沒有順序,所以會是最後執行
詳細內容一樣可以到官網中查詢
1 | npm install cordova-uglify --save |
做完以上的動作,我們就可以下個指令確認一下
1 | cordova prepare [platform] --release |
沒有看到任何錯誤就是成功啦
可以打完收工囉
ㄟㄟㄟ~等等!
mac用戶明明會遇到另一個錯誤
好吧~我只好再回來繼續
因為mac用戶會有權限的問題,會只看到一個鬼一般的訊息
Error: EACCES
那這個問題不大,只要下個指令給個權限就好,針對我們在after_prepare所新增的兩個檔案012、015
1 | chmod +x hooks/after_prepare/[filename] |
好啦,這次真的要打完收工了