在构建期间通过挂钩编辑值

时间:2017-01-27 01:39:40

标签: ionic2

我在构建应用程序时尝试编辑版本变量,但我根本无法使用cordova钩子运行任何脚本。

我想从package.json和git commit的最后5位获取版本,所以我可以使用1.0.0.89gkt作为我的版本。

过去对于离子1和使用grunt或gulp,我能够轻松地将脚本添加到构建过程中。

我已经尝试了使用hooks / hook_name / script格式的旧方法,并在config.xml中使用了hook标记,但对我来说都不起作用。

通过package.json覆盖离子脚本允许我更改自动运行的脚本,但是如果可以的话我想避免这样做。虽然我可以轻松地将我的文本替换为其中一个复制脚本或其他东西(不好找出哪一个最好)

如果有人知道更好的方式或原因,为什么挂钩不会开火,请告诉我。

1 个答案:

答案 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",
}