由于公司业务拓展,需要实现客户定制化,即自己上传必要的文件即可生成自己的安装包,这就需要实现自动化打包,打包脚本选择了shell脚本,可能会有人问为什么不用python呢?因为不会python啊
。
作为一个前端开发人员,让写自动化脚本,最开始还是一脸懵逼的,但是没办法啊,还是得硬着脸皮上啊,于是到网上找各种资料,学习了一下shell常用命令,然后便开始研究了,因为平时mac打包用的是package工具,所以得整理一下使用工具打包的过程是怎样的,然后再思考如何用脚本来替代工具所做的步骤。客户端开发的框架是用的nw.js+angular,所以得在nw.js的打包原理上入手。终于在github找到了开源项目nwjs-shell-builder。研究了一天脚本,然后就尝试着开始自己打包了。
首先需要做的就是配置文件config.json,该文件是配置打包时需要进行替换的相关信息
其中name字段是用来定义安装包的名称,applicationName是用来配置应用名称,version是用来配置应用版本,src表示的是源代码的路径,nwjsVersion表示的是nwjs的版本,osxIconPath表示的是应用图标,faviconIconPath表示的是任务栏图标,license表示的是用户许可协议,CFBundleIdentifier表示的bundleID,后面的则表示在应用中需要替换的样式,应用logo等。
接下来就是开始打包了,首先获取配置文件的路径,并根据配置文件中的key获取对应的value,定义临时打包文件夹,安装包存放位置,以下就是打包的脚本,给该脚本命名为package.sh
#!/usr/bin/env bash
# Exit on error
set -e
BUILD_DIR=`pwd`
WORKING_DIR="${BUILD_DIR}/TMP"
RELEASE_DIR="${BUILD_DIR}/releases"
DIST_DIR="${RELEASE_DIR}/build"
# 配置文件config.json的路径
CONFIG_FILE="${BUILD_DIR}/config.json"
# 根据key获取value方法封装
get_value_by_key() {
JSON_FILE=${CONFIG_FILE}
KEY=${1}
# REGEX="\"([^\"]*)\""
JSON_VALUE=$(cat ${JSON_FILE} | jq .${KEY} | sed 's/\"//g')
echo "${JSON_VALUE}"
}
# Name of your package
architechture="x64"
# architechture="ia32"
pack_osx () {