(Angular 2+) Как получить deploy-url после сборки? - PullRequest
0 голосов
/ 18 июня 2019

Мне нужно знать информацию о времени сборки (ng build --this_information или из angular.json), например, deploy_url или base_href во время выполнения.

Для base_href я могу прочитать *Вместо этого атрибут 1008 * тега <base>, но альтернативы для deploy_url нет.

Может ли кто-нибудь дать мне "Угловой способ" чтения конфигураций сборки во время выполнения?

Iне хочу менять конфигурации сборки во время выполнения, а просто хочу читать и печатать.

1 Ответ

0 голосов
/ 18 июня 2019

Если ваша конфигурация сборки хранится в angular.json, вы можете скопировать относящиеся к вам биты в json-файл в папке «src / assets /» с помощью сценария nodeJS:

let fs = require("fs");
let angularJson = require("../angular.json");

let buildConfig = {
  baseHref: angularJson.projects.<projectname>.architect.build.options.baseHref,
  deployUrl: angularJson.projects.<projectname>.architect.build.options.deployUrl,
};

fs.writeFile(
  "./src/assets/buildConfig.json",
  JSON.stringify(buildConfig),
  {flag: ""},
  err => {
    if (err) {
      console.log(err);
    }
  }
);

// example output=> '{"baseHref": "/app", "deployUrl": "https://example.com"}'

В этом случае этот сценарий хранится в / scripts, вам может потребоваться обновить относительные пути, если вы храните его в другой папке. Также не забудьте указать правильное имя проекта. Вы можете включить этот сценарий перед обычным этапом сборки, обновив сценарий сборки в вашем package.json следующим образом:
"build": "node ./scripts/extractBuildConfig.js && ng build"

Хотя, если вы хотите получить только фактическое местоположение, в котором фактически развернуто веб-приложение, возможно, гораздо проще получить значение document.location (или одно из его свойств), document.baseURI, document.domain и document.getElementsByTagName("base")[0].attributes["href"].

Все это говорит о том, что если вы правильно настроили базовый href в своем проекте Angular, все относительные пути в ваших файлах должны автоматически указывать на правильные местоположения, поэтому я не уверен, для чего вам это вообще понадобится.

...