Чтение настроек приложения из файла JSON в угловом приложении - PullRequest
0 голосов
/ 18 октября 2019

Я реализовал конфигурацию приложения для чтения из файла JSON из моего углового приложения, чтобы его можно было легко настроить после развертывания. Мы используем инструмент развертывания Octopus для развертывания углового приложения. Как вы знаете, наличие файла enviornment.ts генерируется как файл js, и очень сложно манипулировать настройками в Octopus, читая файл JS. Поэтому я создал файл config.JSON, который будет выводиться в папку dist, и Octopus deploy может использовать файл JSON для внесения изменений при необходимости.

В настоящее время приложение считывает значения из файла окружения, который, в свою очередь, являетсячтение значений, установленных в файле Config.JSON.

Я хотел бы знать, правильный ли мой подход?

Config.JSON

{
    "settings": {
        "production": false,
        "userIdleMinutes": "10",
        "corePingIntervalSeconds": "10",
        "baseUrl": "http://localhost:57973",
        "loginUrl": "/Login",
        "adminUrl": "/Admin"
    }
}

enviornment.ts

import config from '../assets/config.json'

// The file contents for the current environment will overwrite these during build.
// The build system defaults to the dev environment which uses `environment.ts`, but if you do
// `ng build --env=prod` then `environment.prod.ts` will be used instead.
// The list of which env maps to which file can be found in `.angular-cli.json`.

export const environment = {
    production: config.settings.production,
    baseUrl: config.settings.baseUrl,
    loginUrl:config.settings.loginUrl,
    adminUrl: config.settings.adminUrl,
    userIdleMinutes: config.settings.userIdleMinutes,
    corePingIntervalSeconds: config.settings.corePingIntervalSeconds 
};

1 Ответ

0 голосов
/ 18 октября 2019

если вы используете octopus, вместо этого, в вашем environment.prod.ts добавьте несколько токенов и замените их в каждой среде на octopus

(сейчас у меня нетдоступ, чтобы показать вам, как, но что-то вроде ниже)

environment.prod.ts

export const environment = {
    production: #{production},
    baseUrl: "#{baseUrl}",
    //... rest of your configs
};

затем добавьте шаг для замены этих переменных на переменные, определенные всреда в файле main.*.js при каждом развертывании

...