Mat*_*ers 6 xml bash cordova ionic2
嗨,这个问题很可能只是一个科尔多瓦问题.我见过类似的问题,但从来没有得到满意的答案.
我的最终目标是,一种简单的方法来构建Android,iOS和Windows Phone应用程序的多个Flavors.
我最大的要求是:
我目前所做的是在我的webpack.config中添加一些代码(我的离子项目使用webpack).要改变sass颜色,我也可以在这里轻松添加其他选项.
这可能是实现它的最糟糕方式,但我只需要一个工作原型
var flavour = "some.namespace.dir";
var ENV = "TEST";
for(var i = 0; i < args.length ; i++) {
if (args[i] == "--env") {
if (args[i+1]) {
ENV = args[i+1];
}
}
if (args[i] == "--flavour") {
if (args[i+1]) {
flavour = args[i+1];
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,这将检查node命令是否有任何--flavour或--env标志来设置这些属性.在此之后,我将以愚蠢的方式加载配置.
var config =
JSON.parse(
require('fs').readFileSync(
require('path').resolve(
__dirname,
'flavours/' + flavour + ".json"),
'utf8'));
Run Code Online (Sandbox Code Playgroud)
好吧,所以我有一个json对象,我几乎可以在这里放任何东西,所以为了做自定义样式,我们可以使用sass加载器.
sassLoader: {
includePaths: [
'node_modules/ionic-angular',
'node_modules/ionicons/dist/scss'
],
data: "$custom-primary: " + config.colorPrimary + " ; $custom-accent: " + config.colorAccent + " ;"
},
Run Code Online (Sandbox Code Playgroud)
所以这实际上让我在sass版本中添加变量,太棒了!至于配置:
new DefinePlugin({
'ENV': JSON.stringify(ENV),
'appConfig': JSON.stringify(config)
})
Run Code Online (Sandbox Code Playgroud)
所以我有这些东西,我可以使用它来使应用程序内部的逻辑特定于一个味道.
我很想知道我的实施中有多么失望的人,以及他们是否有改进任何建议的建议.
到目前为止,我想我将需要一个bash脚本来更改我的config.xml和资源.我可以有一个模板文件,我在其中替换命名空间,或者我只是在我的"flavor"文件夹中创建config.xml文件并将它们复制到位.
任何建议或wtf的人都可以分享?至于现在,我可能会使用每个目录方法中的配置以及资源.这样我就可以点击一个bash文件来构建编译并签名任何风格.
小智 0
要从 config.xml 中读取应用程序 ID,您可以使用这段 JS 代码。
const fs = require('fs').promises;
const xml2js = require('xml2js');
async function getAppId() {
const data = await fs.readFile('config.xml') ;
const parser = new xml2js.Parser();
const result = await parser.parseStringPromise(data);
const appId = result.widget['$'].id;
return appId
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1171 次 |
| 最近记录: |