Ionic2 在构建期间通过钩子编辑值

Ionic2 在构建期间通过钩子编辑值,ionic2,Ionic2,当我构建应用程序时,我试图编辑一个版本变量,但我根本无法使用cordova钩子运行任何脚本 我想从package.json和git提交的最后5位数字中获取版本,这样我就可以将类似于1.0.0.89gkt的内容作为我的版本 在过去的ionic 1中,使用grunt或gulp,我能够轻松地将脚本添加到构建过程中 我尝试过使用hooks/hook\u name/script格式和config.xml中的hook标记这两种老方法,但这两种方法都不适用于我 通过package.json覆盖ionic脚本允

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

我想从package.json和git提交的最后5位数字中获取版本,这样我就可以将类似于1.0.0.89gkt的内容作为我的版本

在过去的ionic 1中,使用grunt或gulp,我能够轻松地将脚本添加到构建过程中

我尝试过使用hooks/hook\u name/script格式和config.xml中的hook标记这两种老方法,但这两种方法都不适用于我

通过package.json覆盖ionic脚本允许我更改自动运行的脚本,但如果可以的话,我希望避免这种情况。虽然我可以轻松地将文本替换添加到某个复制脚本或其他内容中(我需要确定哪一个是最好的)


如果有人知道一个更好的方法或者一个为什么钩子不会开火的原因,请告诉我。

这就是我最终使用的解决方案

脚本/before\u prepare\u increment\u build\u 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

我需要确保所有事情都是同步进行的,否则内置脚本将在替换字符串之前开始复制

目前,它的目标是默认的ionic应用程序脚本生成的整个main.js,因此可以根据需要添加所有比较和替换。 此解决方案在准备之前使用内置cordova挂钩

另一个可以用来提高效率的解决方案是根据需要针对单个文件,在package.json中的build/service脚本之前添加脚本,并让npm控制和管理它

在package.json中,可以向prepare钩子添加脚本

"scripts": {
    "prepare": "node increment_build_number.js",
}

这就是我最终使用的解决方案

脚本/before\u prepare\u increment\u build\u 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

我需要确保所有事情都是同步进行的,否则内置脚本将在替换字符串之前开始复制

目前,它的目标是默认的ionic应用程序脚本生成的整个main.js,因此可以根据需要添加所有比较和替换。 此解决方案在准备之前使用内置cordova挂钩

另一个可以用来提高效率的解决方案是根据需要针对单个文件,在package.json中的build/service脚本之前添加脚本,并让npm控制和管理它

在package.json中,可以向prepare钩子添加脚本

"scripts": {
    "prepare": "node increment_build_number.js",
}

不是100%你想要的,但你可以看看谢谢@VolodymyrBilyachat,我确实看到了,并将尝试一下,但我更希望我能将它添加到标准构建流程中,而不是在我进行构建调用之前添加一个新的脚本来运行。(例如,我只需要调用
爱奥尼亚服务
爱奥尼亚构建
,它将根据需要运行脚本不是100%您想要的,但您可以查看感谢@VolodymyrBilyachat,我确实看到了这一点,并将尝试一下,但我更希望我能将其添加到标准构建流程中,而不是在我创建bu之前添加一个新的脚本来运行。)ild电话。(例如,我只需要调用
ionic serve
ionic build
,它将根据需要运行脚本。有人可以用package.json发布替代方法吗?我只想在我的应用程序索引文件上运行版本号的字符串替换。感谢有人发布用package.json执行此操作的替代方法吗?我很简单你想在我的应用程序索引文件上运行版本号的字符串替换。谢谢