CocosCreator打包腳本開發


產品上線需要接入公司打包平台

使用web端執行打包腳本執行打包任務

打包過程中需要完成引擎生成、項目生成、圖片壓縮、文件名MD5重命名、ZIP打包壓縮等操作

由於打包機器是公司‘內定’的mac機

所以打包腳本選擇了shell+nodejs

轉載注明出處http://www.cnblogs.com/billyrun/articles/7474937.html

 

1.引擎代碼生成

引擎代碼就是項目中的cocos2d-js.js/cocos2d-js-min.js

當使用默認js引擎時是不需要手動生成引擎代碼的

若此次打包修改了引擎源碼,就需要手動生成新的引擎代碼文件

項目中可以記錄引擎目錄的svn版本號來確認引擎是否有更新

若有更新,執行gulp build即可(如果不想配環境變量,可以直接執行node ./node_modules/gulp/bin/gulp.js build)

配置方法參考官方文檔http://www.cocos.com/docs/creator/advanced-topics/engine-customization.html

使用自定義引擎還需要手動設置引擎地址

具體的講就是修改一個json文件

C:\Users\xxx\.CocosCreator\settings.json(windows)

/Users/xxx/.CocosCreator/settings.json(mac)

將json文件中js-engine-path改寫為自定義引擎路徑,use-default-js-engine設為false

 

2.項目生成

腳本生成項目如同面板中點擊‘項目’-‘構建發布’

命令形如

$CREATOR_PATH --path $PROJECT_PATH --build "buildPath=${BUILD_PATH};platform=${PLATFORM}"

build中其余常用參數還有 startScene/webOrientation/debug等

詳細可參考官方文檔http://www.cocos.com/docs/creator/publish/publish-in-command-line.html

 

3.文件名MD5

項目采用了類似頁游的更新策略

文件名后綴+md5碼唯一確定文件版本

在Creator1.6+版本好像可以自動MD5

無奈我做的時候還沒有1.6

這里使用nodejs完成文件遍歷與MD5操作

幾個常用模塊和操作如下

require('fs') 文件處理

require('path') 路徑/文件名處理

require('crypto') MD5計算

require('child_process') 子進程/調用其他程序

fs.stat 判斷isFile 文件還是文件夾

fs.readdir 遍歷指定目錄

fs.writeFileSync 寫入記錄文件名與MD5碼映射關系

fs.renameSync 重命名

 

MD5具體操作如下

var md5sum = crypto.createHash('md5')
var stream = fs.createReadStream(path)
stream.on('data' , function(chunk){md5sum.update(chunk)})
stream.on('end' , function(){
    var md5Code = md5sum.digest('hex')
    // rename by md5 code  
})

 

4.圖片壓縮

圖片壓縮使用了兩個工具分別處理png/jpg

分別是pngquant/ImageMagick

具體調用在遍歷文件時使用path.extname判斷后綴名

然后由child_process.exec(commandString , callback)子進程中異步壓縮

png命令

command = pngEnginePath + ' --force --ext .png ' + imgPath

jpg命令

commang = 'export DYLD_LIBRARY_PATH="'+JPG_ENGINE_LIB+'" && ' + jpgEnginePath + ' -quality 70 -strip ' + imgPath + ' ' + imgPath

這個略復雜,首先要export它的library,然后設置原圖路徑和壓縮后圖片路徑

在執行圖片壓縮以前

還需要處理這兩個工具的執行權限

command = ‘chmod a+x ’ + enginePath

 

5.ZIP打包

mac命令如下

zip -qr to from

zip -qr ../${zipName} res src cocos2d*

即壓縮res/src兩個文件夾和cocos2d開頭的文件(cocos2d-js.js/cocos2d-js-min.js)至指定目錄保存為zipName

 

大概就總結這么多吧

nodejs效率還是蠻高的

循環遍歷文件夾要比shell快很多!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM