Можно ли передать переменную в angular.json и избежать дублирования кода? - PullRequest
0 голосов
/ 12 ноября 2018

Я ищу способ передачи информации в файл angular.json, чтобы мне не нужно было повторять конфигурации сборки и избегать дублирования кода. Я не могу хорошо объяснить, поэтому я попробую на примере. Так что в моем angular.json под configurations у меня есть что-то вроде

"configurations": {
"de": {
              "aot": true,
              "i18nLocale": "de",
              "i18nFile": "project/src/locale/messages.de.xlf",
              "i18nFormat": "xlf"
            },
            "en-gb": {
              "aot": true,
              "i18nLocale": "en-gb",
              "i18nFile": "project/src/locale/messages.en-gb.xlf",
              "i18nFormat": "xlf"
            },
            "en-us": {
              "aot": true,
              "i18nLocale": "en-us",
              "i18nFile": "project/src/locale/messages.en-us.xlf",
              "i18nFormat": "xlf"
            },
            "es": {
              "aot": true,
              "i18nLocale": "es",
              "i18nFile": "project/src/locale/messages.es.xlf",
              "i18nFormat": "xlf"
            },
            "fr": {
              "aot": true,
              "i18nLocale": "fr",
              "i18nFile": "project/src/locale/messages.fr.xlf",
              "i18nFormat": "xlf"
            },
            "it": {
              "aot": true,
              "i18nLocale": "it",
              "i18nFile": "project/src/locale/messages.it.xlf",
              "i18nFormat": "xlf"
            },
            "pt-br": {
              "aot": true,
              "i18nLocale": "pt-br",
              "i18nFile": "project/src/locale/messages.pt-br.xlf",
              "i18nFormat": "xlf"
            }

Есть ли способ иметь переменную, например, скажем, i18n, и я могу использовать ее в angular.json, как $i18n:

"configurations": {
"i18n": {
              "aot": true,
              "i18nLocale": "$i18n",
              "i18nFile": "project/src/locale/messages.$i18n.xlf",
              "i18nFormat": "xlf"
            }

Я плохо разбираюсь в английском. Надеюсь, я хорошо объяснил на примере то, что я ищу. Заранее спасибо.

1 Ответ

0 голосов
/ 12 ноября 2018

Я не говорю угловой , но в надежде, что это полезно, я думаю, вы смотрите на это примерно так:

echo '["de","en-gb","en-us","es","fr","it"]' | jq '
  {"configuration":[ .[] as $c |
    {
      ($c):{
         "aot":true,
         "i18nLocale": $c,
         "i18nFile": ("project/src/locale/messages." + $c + ".xlf"),
         "i18nFormat": "xlf"
      }
    }
  ]}'

Эта команда использует синтаксический анализатор командной строки jq для создания конфигурации JSON в соответствии с вашим первым примером.

Вы можете увеличить таблицу, отправленную с echo до jq, до любой строки страны и получить столько конфигураций.

...