我正在使用cordova-plugin-facebook4插件构建一个离子/ cordova项目,用于Facebook身份验证访问.在config.xml这看起来像:
<plugin name="cordova-plugin-facebook4" spec="~1.7.1">
<variable name="APP_ID" value="1234567890123456"/>
<variable name="APP_NAME" value="My_Appy_App"/>
</plugin>
Run Code Online (Sandbox Code Playgroud)
这可以,但APP_ID我们正在使用的是开发应用程序,我们有一个单独的Facebook应用程序用于其他环境,如QA.
有没有办法参数化这些变量config.xml并将它们作为构建步骤的一部分进行替换?就像是:
<plugin name="foo" spec="~0.0.0">
<variable name="bar" value="${env.APP_ID}"/>
</plugin>
Run Code Online (Sandbox Code Playgroud)
...然后运行APP_ID=baz ionic build android或类似的东西.
我没有在cordova文档中看到任何允许您这样做的内容.
嗨,这个问题很可能只是一个科尔多瓦问题.我见过类似的问题,但从来没有得到满意的答案.
我的最终目标是,一种简单的方法来构建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: " …Run Code Online (Sandbox Code Playgroud)