What is @backstage/config-loader?
@backstage/config-loader is a package designed to load and manage configuration files for Backstage applications. It supports various configuration formats and allows for merging and validating configurations, making it easier to manage complex setups.
What are @backstage/config-loader's main functionalities?
Loading Configuration Files
This feature allows you to load configuration files from specified paths. The `loadConfig` function reads the configuration files and merges them into a single configuration object.
const { loadConfig } = require('@backstage/config-loader');
async function load() {
const config = await loadConfig({
configRoot: './config',
configPaths: ['./app-config.yaml'],
});
console.log(config.get());
}
load();
Merging Configurations
This feature allows you to merge multiple configuration files. The `loadConfig` function can take multiple paths, and it will merge the configurations in the order they are provided.
const { loadConfig } = require('@backstage/config-loader');
async function load() {
const config = await loadConfig({
configRoot: './config',
configPaths: ['./app-config.yaml', './app-config.local.yaml'],
});
console.log(config.get());
}
load();
Validating Configurations
This feature allows you to validate and read specific configuration values. The `ConfigReader` class provides methods to read and validate configuration values.
const { loadConfig } = require('@backstage/config-loader');
const { ConfigReader } = require('@backstage/config');
async function load() {
const config = await loadConfig({
configRoot: './config',
configPaths: ['./app-config.yaml'],
});
const configReader = new ConfigReader(config.get());
const value = configReader.getString('app.title');
console.log(value);
}
load();
Other packages similar to @backstage/config-loader
config
The 'config' package is a popular Node.js configuration management solution. It allows for hierarchical configurations for different deployment environments. Compared to @backstage/config-loader, 'config' is more general-purpose and not specifically tailored for Backstage applications.
dotenv
The 'dotenv' package loads environment variables from a .env file into process.env. While it is simpler and more focused on environment variables, it lacks the advanced merging and validation features of @backstage/config-loader.
convict
The 'convict' package provides a way to define a schema for your configuration files, validate them, and load them. It offers similar validation capabilities as @backstage/config-loader but is more focused on schema definition and validation.
@backstage/config-loader
This package provides config loading functionality used by the backend, and CLI.
Installation
Do not install this package directly, it is an internal package used by @backstage/cli, and @backstage/backend-common. Depend on either of those instead.
Documentation