IDE-kompletteringar
English | 中文 | 日本語 | 한국어 | Français | Deutsch | Español | Português | Svenska | Suomi | Nederlands
Genererade JSON Schemas kan anvandas av TOML-, YAML-, JSON- och
JSON5-konfigurationsfiler. De genereras fran samma Rust-typ som anvands av
confique:
#![allow(unused)]
fn main() {
use confique::Config;
use schemars::JsonSchema;
#[derive(Debug, Config, JsonSchema)]
struct AppConfig {
#[config(nested)]
#[schemars(extend("x-tree-split" = true))]
server: ServerConfig,
}
}
Generera dem med:
#![allow(unused)]
fn main() {
use rust_config_tree::write_config_schemas;
write_config_schemas::<AppConfig>("schemas/myapp.schema.json")?;
Ok::<(), Box<dyn std::error::Error + Send + Sync>>(())
}
Detta skriver rotschemat och sektionsscheman som
schemas/server.schema.json. Genererade scheman utelamnar
required-begransningar sa komplettering fungerar for partiella
konfigurationsfiler utan diagnostik for saknade falt. Rotschemat utelamnar
delade sektionsproperties, sa barnsektionskomplettering ar bara tillganglig i
filer som binder matchande sektionsschema. Omarkerade nastlade sektioner stannar
i rotschemat.
Falt markerade med x-env-only utelamnas fran genererade scheman, sa IDE:er foreslar inte secrets eller andra varden som bara ska komma fran miljovariabler.
IDE-scheman ar for komplettering och grundlaggande editor-kontroller, som typ,
enum och okanda properties som stods av det genererade schemat. De avgor inte om
ett konkret faltvarde ar giltigt for programmet. Faltvardevalidering ska
implementeras i kod med #[config(validate = Self::validate)] och koras via
load_config eller config-validate. Obligatoriska falt och slutlig
sammanslagen konfigurationsvalidering anvander ocksa dessa runtime-vagar.
TOML
TOML-filer bor binda schemat med ett #:schema-direktiv hogst upp:
#:schema ./schemas/myapp.schema.json
[server]
bind = "0.0.0.0"
port = 3000
Anvand inte ett rot-$schema = "..."-falt i TOML. Det blir riktig
konfigurationsdata och kan paverka runtime-deserialisering.
write_config_templates_with_schema lagger automatiskt till #:schema-
direktivet for TOML-mallar.
YAML
YAML-filer bor anvanda YAML Language Servers modeline:
# yaml-language-server: $schema=./schemas/myapp.schema.json
server:
bind: 0.0.0.0
port: 3000
write_config_templates_with_schema lagger automatiskt till denna modeline for
YAML-mallar. Delade YAML-mallar binder sitt sektionsschema, till exempel binder
log.yaml ./schemas/log.schema.json.
JSON
JSON- och JSON5-filer kan binda ett schema med ett rotfalt $schema. write_config_templates_with_schema lagger till det automatiskt for genererade JSON- och JSON5-mallar:
{
"$schema": "./schemas/myapp.schema.json"
}
Editor-installningar ar fortfarande anvandbara nar ett projekt inte vill ha bindning i filen:
{
"json.schemas": [
{
"fileMatch": [
"/config.json",
"/config.*.json",
"/deploy/*.json"
],
"url": "./schemas/myapp.schema.json"
}
]
}
YAML kan ocksa bindas via VS Code-installningar:
{
"yaml.schemas": {
"./schemas/myapp.schema.json": [
"config.yaml",
"config.*.yaml",
"deploy/*.yaml"
]
}
}
Den slutliga layouten ar:
schemas/myapp.schema.json:
Endast rotfilens falt
schemas/server.schema.json:
Schema for sektionen server
config.toml:
#:schema ./schemas/myapp.schema.json
config.yaml:
# yaml-language-server: $schema=./schemas/myapp.schema.json
server.yaml:
# yaml-language-server: $schema=./schemas/server.schema.json
config.json:
"$schema": "./schemas/myapp.schema.json"
Referenser: