Hvad er YML-filformatet?
.yml er en almindelig tekstfil og et dataudvekslingsformat. Det er et standardiseret, platformuafhængigt format, der gemmer data som menneskelæsbar tekst, organiseret gennem en indrykningsbaseret key: value-struktur. .yml-filer kan læses og skrives ved hjælp af YAML-biblioteker, der er tilgængelige for stort set alle større programmeringssprog. .yml og .yaml identificerer det samme format - .yml er den ældre tre-bogstavsform, der er bibeholdt af mange værktøjer såsom docker-compose.yml, .gitlab-ci.yml og GitHub Actions-workflows. Formatet bruges oftest til dataserialisering og applikationskonfiguration.
Serialisering er et begreb, der bruges i datalogi og refererer til konceptet med at udveksle data mellem programmer eller applikationer ved hjælp af veldefinerede objekter. Et objekt kan forstås som en datacontainer. For eksempel er databaseposter en form for dataserialisering, da de let kan udveksles mellem forskellige databaser. Serialiserede data kan også tage form af strukturerede filer, som kan sendes mellem applikationer. Blandt de mest anvendte serialiseringsformater er .yml, XML, JSON og TOML.
Et særpræg ved .yml er brugen af betydningsfuldt whitespace: indrykning definerer dokumentstrukturen, og kun mellemrum er tilladt - tabulatorer er udtrykkeligt forbudt i specifikationen. Dokumenter kan valgfrit åbne med --- (dokumentstart) og lukke med .... YAML understøtter også inline #-kommentarer, multilinje-blok-skalarer ved hjælp af | eller > samt ankre (&) med aliaser (*) til genbrug af gentagne værdier.
Sikkerhed og tryghed
RISIKO: MEDIUMEn .yml-fil er almindelig tekst og eksekveres ikke af sig selv, så det er sikkert at læse en. To reelle risici: (1) konfigurations-YAML (CI-pipelines, Compose, K8s, Ansible) indeholder ofte hemmeligheder - tokens, adgangskoder, nøgler - så indsæt dem ikke i upålidelige online validatorer eller commit dem offentligt. (2) Programmatisk fare: indlæsning af upålidelig YAML med en usikker parser (f.eks. PyYAMLs yaml.load i stedet for yaml.safe_load) kan eksekvere vilkårlige objekter/kode - brug altid den sikre indlæser til filer, du ikke stoler på. Redigeringsrisiko: en tabulator eller forkert justeret mellemrum ændrer lydløst betydningen, så valider efter redigering.
Formatdetaljer
kort fortalt- Strangereal IFL camera-map (sjælden) - Nogle få ældre apps genbrugte .yml til ikke-YAML-data, men i dag er filendelsen stort set altid YAML-tekst.
Programmer der åbner YML-filer
Tekniske detaljer
dyb specifikation| MIME-type | application/yaml (IANA-registreret); ældre varianter inkluderer text/yaml, text/x-yaml, application/x-yaml |
| Kodning | UTF-8 (standard og mest almindelig); UTF-16 og UTF-32 med BOM er tilladt af specifikationen, men bruges sjældent i praksis |
| Filstruktur | Indrykningsbaserede mappings (key: value), sekvenser (- item) og skalarer; indlejring udtrykkes udelukkende ved indrykningsniveau |
| Betydningsfuldt whitespace | Indrykning definerer struktur; kun mellemrum er tilladt - tabulatorer er udtrykkeligt forbudt i YAML-specifikationen |
| Dokumentmarkører | Valgfri --- markerer dokumentstart; ... markerer dokumentslut; en enkelt .yml-fil kan indeholde flere YAML-dokumenter adskilt af --- |
| Understøttelse af kommentarer | Inline- og fuldlinjekommentarer introduceret af # - fraværende i JSON og de fleste binære serialiseringsformater |
| Indfødte datatyper | String, integer, float, boolean, null, timestamp og binary (base64-kodet via !!binary-tagget) |
| Ankre og aliaser | & erklærer et genanvendeligt anker; * refererer (aliaser) til det - eliminerer copy-paste-gentagelser i komplekse konfigurationsfiler |
| Blok-skalarer | | (literal block scalar) bevarer linjeskift som de er; > (folded block scalar) sammenfolder linjeskift til mellemrum |
| JSON-superset | Siden YAML 1.2 (2009) er enhver gyldig JSON-fil også gyldig YAML, så YAML-parsere kan læse JSON indfødt |
| Magic bytes / signatur | Ingen - intet binært hoved eller magisk nummer; identificeres ved sin indrykningsbaserede key: value-struktur og .yml- eller .yaml-filendelsen |
| Filstørrelse (typisk) | Bytes til titusindvis af KB for konfigurations- og CI/CD-pipeline-filer; overstiger sjældent et par hundrede KB |
| Ækvivalens mellem filendelser | .yml og .yaml er identiske i format; .yml er den tre-bogstavs DOS-æra-form, der er vedtaget af docker-compose.yml, .gitlab-ci.yml og GitHub Actions |
| Spec-versionsdirektiv | Valgfri %YAML 1.2 pragma ved filstart erklærer spec-versionen; de fleste filer udelader det og stoler på parser-standardindstillinger |
| Udgivet | 2001 (YAML 1.0); YAML 1.1 (2005); current YAML 1.2 (2009, revised 1.2.2 in 2021) |
| Seneste version | YAML 1.2.2 (2021) |
| Åben standard | Ja · royaltyfri |
| Specifikation | yaml.org |
YML-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om YML-filer.