linux下node-webkit自动跨平台打包shell

2019-07-12 21:50发布

前言
node-webkit可谓是webapp开发神器,支持windows、mac、linux,但是打包是个问题,总不能在三个系统里面打包吧。 官方也有打包工具,但是总觉得挺麻烦的。 于是想着linux可不可以通过shell来实现跨平台打包。 实现
http://www.linuxidc.com/Linux/2014-03/97933.htm 发现一位大神写的脚本,但是由于node-webkit改名为nwjs,且该脚本windows、mac下的脚本有问题,因此对它进行了一些修改。 #!/bin/bash # by minghuazhou # init your app info app_name="toopos" app_dir="/home/qiqi/toopos_/trunk/tooposWeb/build" win_nw_zipfile="/home/qiqi/toopos_/trunk/tooposBuilder/codes/nwjs-v0.12.3-win-ia32.zip" linux_nw_tarfile="/home/qiqi/toopos_/trunk/tooposBuilder/codes/nwjs-v0.12.3-linux-x64.tar.gz" mac_nw_zipfile="/home/qiqi/toopos_/trunk/tooposBuilder/codes/nwjs-v0.12.3-osx-ia32.zip" # read pack_flag w=false && l=false && m=false && o=false while getopts "wlmo" arg # -w:windows -l:linux -m:mac -o:overwrite do case $arg in w) w=true ;; l) l=true ;; m) m=true ;; o) o=true ;; ?) echo "unkonw argument" exit 1 ;; esac done if [ ${o} = true ]; then #remove old file [ ${w} = true ] && rm -rf ${app_name}_win [ ${l} = true ] && rm -rf ${app_name}_linux [ ${m} = true ] && rm -rf ${app_name}_mac fi # create app.nw file cd $app_dir zip -r app.nw ./* app_nwfile=${app_dir}/app.nw if [ ${w} = true ]; then echo "creating windows *.exe file..." unzip $win_nw_zipfile -d ${app_name}_win && cd ${app_name}_win winzipdir=$(ls -ad */) mv ${winzipdir}* ./ cat nw.exe $app_nwfile > ${app_name}.exe rm -rf ${winzipdir} nw.exe nwsnapshot.exe credits.html cd .. echo "create windows app success!" else echo "ignore windows app" fi if [ ${l} = true ]; then echo "creating linux execute file..." tar -xf $linux_nw_tarfile -C ./ tardir=${linux_nw_tarfile%.tar*} && tardir=${tardir##*/} # rename tardir mv $tardir ${app_name}_linux && cd ${app_name}_linux cat nw $app_nwfile > ${app_name} && chmod +x ${app_name} rm -rf nw nwsnapshot credits.html cd .. echo "create linux app success!" else echo "ignore linux app" fi if [ ${m} = true ]; then echo "creating mac execute file..." unzip $mac_nw_zipfile -d ${app_name}_mac && cd ${app_name}_mac maczipdir=$(ls -ad */) mv ${maczipdir}* ./ if [ -f ${app_dir}/Info.plist ];then cp ${app_dir}/Info.plist nwjs.app/Contents/ fi cp $app_nwfile nwjs.app/Contents/Resources/ if [ -f ${app_dir}/app.icns ];then cp ${app_dir}/app.icns nwjs.app/Contents/Resources/ fi mv nwjs.app ${app_name}.app rm -rf ${maczipdir} nwsnapshot credits.html cd .. echo "create mac app success!" else echo "ignore mac app" fi # remove app.nw rm -f app.nw
使用方法 一.从nwjs官网上下载三个平台的包 这里取了win32、linux64、mac32的包
二.修改shell脚本中app名称、路径、各平台包文件地址app_name="toopos" app_dir="/home/qiqi/toopos_/trunk/tooposWeb/build" win_nw_zipfile="/home/qiqi/toopos_/trunk/tooposBuilder/codes/nwjs-v0.12.3-win-ia32.zip" linux_nw_tarfile="/home/qiqi/toopos_/trunk/tooposBuilder/codes/nwjs-v0.12.3-linux-x64.tar.gz" mac_nw_zipfile="/home/qiqi/toopos_/trunk/tooposBuilder/codes/nwjs-v0.12.3-osx-ia32.zip"三.终端运行你的.sh文件,如sh yourshell.sh,有四个参数可以给定:

1.-w : 打包windows下的运行文件到 [your_app_name]_win文件夹下

2.-l : 打包linux下的运行文件到[your_app_name]_linux文件夹下

3.-m : 打包mac下的运行文件到[your_app_name]_mac文件夹下

4.-o : 覆盖之前打包过的文件(没有加这一项的话中间会有提示是否覆盖文件) 四.效果图(mac上没有试过,穷逼一个)