Обновление переменных среды Ember.js не вступает в силу при использовании метода in-repo addon config () на ember serve - PullRequest
0 голосов
/ 20 мая 2019

Моя цель здесь - создать номер сборки с автоинкрементом, который обновляется как в 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 ()?

1 Ответ

0 голосов
/ 26 мая 2019

Я не уверен в специфике, но ember-cli-new-version делает это.На этапе сборки они создают файл VERSION.txt, который может даже делать то, что вам нужно, без необходимости писать его самостоятельно.

...