IDE-taydennykset
English | 中文 | 日本語 | 한국어 | Français | Deutsch | Español | Português | Svenska | Suomi | Nederlands
Luotuja JSON Schema -skeemoja voi kayttaa TOML-, YAML-, JSON- ja JSON5-konfiguraatiotiedostoissa. Ne luodaan samasta Rust-tyypista, jota confique kayttaa:
#![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,
}
}
Luo ne nain:
#![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>>(())
}
Tama kirjoittaa juuriskeeman ja osioskeemat, kuten schemas/server.schema.json. Luodut skeemat jattavat required-rajoitteet pois, jotta taydennys toimii osittaisille konfiguraatiotiedostoille ilman puuttuvien kenttien diagnostiikkaa. Juuriskeema jattaa jaettujen osioiden ominaisuudet pois, joten lapsiosioiden taydennys on saatavilla vain tiedostoissa, jotka sitovat vastaavan osioskeeman. Merkitsemattomat sisakkaiset osiot pysyvat juuriskeemassa.
x-env-only-merkityt kentat jatetaan pois luoduista skeemoista, joten IDEt eivat ehdota salaisuuksia tai muita arvoja, joiden tulee tulla vain ymparistomuuttujista.
IDE-skeemat ovat taydennysta ja editorin perustarkistuksia varten, kuten luodun skeeman tukemat tyyppi-, enum- ja tuntemattomien ominaisuuksien tarkistukset. Ne eivat paata, onko konkreettinen kentan arvo sovellukselle kelvollinen. Kentta-arvojen validointi toteutetaan koodissa #[config(validate = Self::validate)]-attribuutilla ja suoritetaan load_config- tai config-validate-polussa. Pakolliset kentat ja lopullisen yhdistetyn konfiguraation validointi kayttavat myos naita runtime-polkuja.
TOML
TOML-tiedostojen tulisi sitoa skeema tiedoston alun #:schema-direktiivilla:
#:schema ./schemas/myapp.schema.json
[server]
bind = "0.0.0.0"
port = 3000
Ala kayta juuritason $schema = "..." -kenttaa TOMLissa. Siita tulee oikeaa konfiguraatiodataa ja se voi vaikuttaa runtime-deserialisointiin. write_config_templates_with_schema lisaa #:schema-direktiivin automaattisesti TOML-malleihin.
YAML
YAML-tiedostojen tulisi kayttaa YAML Language Server -mallirivia:
# yaml-language-server: $schema=./schemas/myapp.schema.json
server:
bind: 0.0.0.0
port: 3000
write_config_templates_with_schema lisaa taman mallirivin automaattisesti YAML-malleihin. Jaetut YAML-mallit sitovat osioskeemansa; esimerkiksi log.yaml sitoo skeeman ./schemas/log.schema.json.
JSON
JSON- ja JSON5-tiedostot voivat sitoa skeeman juuritason $schema-kentalla. write_config_templates_with_schema lisaa sen automaattisesti luotuihin JSON- ja JSON5-malleihin:
{
"$schema": "./schemas/myapp.schema.json"
}
Editoriasetukset ovat edelleen hyodyllisia, jos projekti ei halua sidontaa tiedostoon:
{
"json.schemas": [
{
"fileMatch": [
"/config.json",
"/config.*.json",
"/deploy/*.json"
],
"url": "./schemas/myapp.schema.json"
}
]
}
YAML voidaan sitoa myos VS Code -asetuksilla:
{
"yaml.schemas": {
"./schemas/myapp.schema.json": [
"config.yaml",
"config.*.yaml",
"deploy/*.yaml"
]
}
}
Lopullinen asettelu on:
schemas/myapp.schema.json:
Vain juuritiedoston kentat
schemas/server.schema.json:
server-osion skeema
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"
Viitteet: