我在构建应用程序时尝试编辑版本变量,但我根本无法使用cordova钩子运行任何脚本。
我想从package.json和git commit的最后5位获取版本,所以我可以使用1.0.0.89gkt作为我的版本。
过去对于离子1和使用grunt或gulp,我能够轻松地将脚本添加到构建过程中。
我已经尝试了使用hooks / hook_name / script格式的旧方法,并在config.xml中使用了hook标记,但对我来说都不起作用。
通过package.json覆盖离子脚本允许我更改自动运行的脚本,但是如果可以的话我想避免这样做。虽然我可以轻松地将我的文本替换为其中一个复制脚本或其他东西(不好找出哪一个最好)
如果有人知道更好的方式或原因,为什么挂钩不会开火,请告诉我。
答案 0 :(得分:4)
这是我最终使用的解决方案。
脚本/ before_prepare_increment_build_number.js
var fs = require('fs');
var git = require('git-rev-sync')
console.log('Incrementing Build Number');
var file = fs.readFileSync('www/build/main.js', 'utf8');
var str = git.short();
console.log('short', str)
var result = file.replace(/{{GITVERSIONSTRING}}/g, str);
fs.writeFileSync('www/build/main.js', result);
console.log('Incrementing Build Number Completed');
config.xml中
<hook src="scripts/before_prepare_increment_build_number.js" type="before_prepare"/>
我需要确保所有内容都是同步进行的,否则内置脚本会在替换字符串之前开始复制。
目前它的目标是默认的ionic-app-scripts生成的整个main.js,因此可以根据需要添加所有比较和替换。
此解决方案使用内置的cordova挂钩before_prepare
可用于提高效率的另一个解决方案是根据需要定位单个文件,并在package.json中的build / serve脚本之前添加脚本,并使用npm控制并管理它。
在package.json中,您可以将脚本添加到prepare hook。
"scripts": {
"prepare": "node increment_build_number.js",
}