好的,首先,我的NodeJS和Grunt Fu可能缺乏,所以如果有一个“明显而简单”的答案,请原谅我。
所以基本上我正在使用Grunt,Yeoman和AngularJS Generator以及Cordova。
基本构建设置正常并且工作正常,这意味着我可以运行grunt build
,并将结果融入cordova构建中(通过使用cordova CLI仍未记录的--link-to
功能)。
嗯,好。
现在我正在尝试做的是添加一个可以增加项目版本的繁琐任务,并将其拉入到cordova端的config.xml
(从它进入平台构建的地方 - 至少用Android)。
所以我找到了grunt-bump,并设法让它正常运行。
现在我需要以某种方式获取更新后的版本号(在grunt bump
完成之后),并将其注入Cordova config.xml
。
我看过grunt-cordova-config,这可能有用,但这项任务似乎目前已被打破。我在github上打开了一个关于它的issue。
所以......有人对这是怎么做的?
或者是否存在完全不同的方法(我喜欢bump
完成提交,标记和推送的事情......)?
谢谢!
答案 0 :(得分:1)
这是一个旧线程,但我有同样的问题,并创建了一个powershell脚本,虽然我正在使用它为cordova构建它可以适应工作所以它需要版本1.1.1.2并将其增加到1.1.2.2并开始构建。
#Get Current Version
[xml]$myXML = Get-Content C:\YOURAPP\config.xml
$myXML.widget.version
$oldVersion = $myXML.widget.version
$splitVersion = $oldVersion.Split(".")
#Set Current Version to increment by 1
$newVersion = ([int]$splitVersion.Item(2) + 1)
$oldVersion = $oldVersion.Remove(4,1)
$oldVersion = $oldVersion.Insert(4,$newVersion)
#Set new value
$myXML.widget.version = $oldVersion
#Save changes
$myXML.Save("C:\YOURAPP\config.xml")
#Go to cordova folder
cd C:\YOURAPP
#Build App
cordova build android
希望这有助于某人:)
答案 1 :(得分:0)
好的,因为似乎没有人愿意咬人,所以我就是这样做的。
首先,使用yeoman angularJS生成器设置您的项目(模糊地),使用--link-to选项设置cordova。
其次,为项目添加和配置grunt-bump。
然后在copy任务中添加一个部分(我希望它存在,如果没有,请点击链接并添加)
cordovaConfig: {
src: 'app/config.cordova.xml',
dest: '../cordova/config.xml',
options: {
process: function (content, srcpath) {
/*
* Ok, I will be the first to admit that this is HORRIBLY inefficient,
* BUT it works. Which is more than I can say for other approaches I tried.
*/
var locPkg = grunt.file.readJSON('package.json');
grunt.log.write ('new version ' +locPkg.version );
var deVersion = 'version="' + locPkg.version + '"';
return content.replace(/version="\d+\.\d+\.\d+"/,deVersion);
}
}
}
为了获得额外的强大功能,请注册一个新的grunt任务:
grunt.registerTask('release', [
'bump',
'copy:cordovaConfig'
]);
然后你可以运行grunt release
,并在所有正确的位置升级版本;)