Моя цель здесь - создать номер сборки с автоинкрементом, который обновляется как в ember build, так и в ember serve.В конце концов, если я могу использовать это только при сборке, это совершенно нормально.
Первоначально я задал этот вопрос: Аддон in-repo при записи публичных файлов при сборке вызывает бесконечный цикл сборки при подаче В этом я пытался решить эту проблему, записывая файлы JSON.Проблема была в основном решена, но без использования угасающей подачи
Вместо этого я сейчас пытаюсь обновить локальную среду.Но это имеет аналогичную проблему с угольной подачей.У меня отлично растет номер сборки.Я могу использовать метод config () для установки пользовательских / динамических переменных в среде.У меня проблема в том, что, хотя я могу регистрировать изменения в терминале при вызове config (), и я вижу, что он работает на сервере при изменении файлов, я не вижу изменений в браузере, когда вывожу Ember'sENV с использованием тлеющего уголька.Пока вот методы моего аддона.
Примечание: функция appNumberSetup () просто читает локальный файл json в корне проекта и обновляет номер сборки.Это работает нормально.Все, что касается pubSettingsFile, можно игнорировать, я не буду использовать это для продвижения вперед
init(parent, project) {
this._super.init && this._super.init.apply(this, arguments);
// we need to setup env in init() so config() and prebuild()
// will see update immediately
this.settingsFile = path.resolve(this.appDir, this.settingsFileName);
this.addonPubDataPath = path.resolve(this.appDir, 'lib', this.name, 'inc', 'public', 'build-data-output');
this.pubSettingsFile = path.resolve(this.addonPubDataPath, this.pubSettingsFileName);
// this only checks for .env variables and sets defaults
this.dotEnvSetup();
// must set this so prebuild skips processing a build number on build
// else we get build number incremented twice on first run
// then appNumberSetup() disables so subsequent serve preBuild() will run.
this.skipPreBuild = true;
this.appNumberSetup();
},
// this sends our created settings data to ENV.localBuildSettings in app
config(environment, appConfig){
// this 'buildme' is just an experiment
let x = `buildme${this.buildNumber}`;
let r = {
localBuildSettings: this.settings
};
r[`buildme${this.buildNumber}`] = this.buildNumber;
this.dlog("Config ran...");
this.dlog(JSON.stringify(r, null, 4));
return r;
},
preBuild: function(result){
// init() disables preBuild() here, but subsequent builds with serve still
// run appNumberSetup() to update this.settings for env and JSON
if(this.skipPreBuild === true){
this.skipPreBuild = false;
}
else {
// only run here after init runs
this.appNumberSetup();
}
// don't do this... write file makes endless loop on serve
// this.saveSettingsFile(this.pubSettingsFile, this.settings);
},
this.settings - это локальная переменная в addon, которая обновляется при сборке / обслуживании, JSON выглядит следующим образом:
{
"appVersion": 911,
"appBuildNumber": 7117
}
Есть ли способ обновить ENV Ember с помощьюдинамические данные?(как и новый номер сборки)
Кажется, что addon config () запускается при каждом изменении в ember serve и показывает номер сборки в выводе терминала.Но похоже, что он запускается после postBuild ().Может быть, поэтому я не вижу изменений.Есть ли способ обновить эту среду во время preBuild ()?