tun können Es wäre genial, wenn es eine solche einfache Funktion war, aber leider die einzige Option, die ich an dieser Stelle wissen würde Haken zu verwenden.
Sie können die Ereignisse before_build
und after_build
verwenden, um Ihre Konfiguration vor dem Kompilieren effektiv zu bearbeiten und sie dann wieder zu ändern, sobald der Prozess abgeschlossen ist.
Dies ist ungetestet Code, aber es würde wie folgt aussehen:
/scripts/before_build/config_variables.js
#!/usr/bin/env node
var fs = require('fs');
var variables = require('./../../.variables');
module.exports = function(context) {
var configPath = 'config.xml';
var configBackupPath = 'config.xml.backup';
var config = fs.readFileSync(configPath, 'ascii');
fs.writeFileSync(configBackupPath, config, 'ascii');
var tempConfig = config.replace(/\${(.*?)}/g, function (match, variableName) {
if (variables.hasOwnProperty(variableName)) {
return variables[variableName];
} else {
return match;
}
});
fs.writeFileSync(configPath, tempConfig, 'ascii');
}
/scripts/after_build/config_variables.js
/.variables.js
module.exports = {
FABRIC_API_KEY: 'blablabla',
FABRIC_API_SECRET: 'blablabla_secret',
};
Und schließlich würden Sie diese Haken in die config.xml
Datei selbst hinzufügen:
<hook type="before_build" src="scripts/before_build/config_variables.js" />
<hook type="after_build" src="scripts/after_build/config_variables.js" />
Wenn Sie jetzt $ phonegap build {platform}
führen Sie es von dem Objekt ziehen werden Sie in .variables.js
exportieren, die Config überschrieben werden soll, bauen/kompilieren und ersetzen Sie die bearbeitete Konfiguration aus der Sicherung.
Ich ging tatsächlich einen Schritt weiter in meinem eigenen Gebrauch und verwendet Befehlszeilenargumente in verschiedenen Variablen für mehrere App Aromen zu ziehen :)
Ein letzter Tipp, stellen Sie sicher, dass Ihre Haken ausführbar sind.
Wissen Sie, ob die after build Hooks immer aufgerufen werden, auch wenn der Build aus irgendeinem Grund fehlschlägt (zB. CTRL + C) – rkmax
Leider sind sie nicht, also wenn der Build fehlschlägt, würden Sie mit einer geänderten Konfiguration enden .xml. Zum Glück, wenn Sie mit einem VCS verfolgen, das ist eine einfache Lösung, aber immer noch unbequem: –