package.json a JSON konfigurace

JSON konfigurace má syntaxi JSON a vlastní pravidla aplikace. Package.json je manifest npm; nastavení VS Code používá JSONC a jiná pravidla parseru.

Autor: Aktualizováno

Manifest npm

Ukázka je platný package.json. Type=module určuje interpretaci JavaScript souborů v balíčku; scripts jsou příkazy, které npm spouští. Změna manifestu není instalace nebo aktualizace závislostí.

Manifest npm
{
 "name":"ukazka-xml",
 "version":"1.0.0",
 "private":true,
 "type":"module",
 "scripts":{"start":"node main.js"}
}

JSON versus JSONC

Package.json nepodporuje komentáře a koncové čárky. Settings.json VS Code používá JSONC. To, že editor obarví oba soubory, neznamená stejná pravidla při spuštění aplikace.

Schéma a význam hodnot

Schéma pomáhá kontrolovat typy a názvy voleb. Private má být boolean, ne řetězec true. Duplicitní klíče raději odmítni. Aplikace může používat další sémantická pravidla, která obecný JSON validátor nezná.

Provoz a bezpečnost

Nevkládej tajemství do verzované konfigurace. Scripts a některé instalační kroky mohou spouštět kód; posuzuj původ manifestu i závislostí. Lockfile udržuj nástrojem správce balíčků a ověř, zda projekt očekává npm, pnpm nebo jiný ekosystém.

Vytvoření malé konfigurace a kontrola typů

config.json pro vlastní aplikaci
{"port":8080,"logovani":true,"zdroje":["knihy","autori"]}
Datové schéma aplikace
{"type":"object","required":["port","logovani"],"properties":{"port":{"type":"integer","minimum":1,"maximum":65535},"logovani":{"type":"boolean"},"zdroje":{"type":"array","items":{"type":"string"},"uniqueItems":true}},"additionalProperties":false}

V JSON Schema validátoru první konfigurace projde. Změň port na string "8080" nebo logovani na "false": validace selže. Řetězec false je neprázdný text a některá programová podmínka by jej považovala za pravdivý. Ověření typů před použitím proto není kosmetická kontrola.

Pro package.json používej vlastnosti npm, nikoli toto vlastní schéma. Hodnota type=module ovlivňuje JS soubory daného balíčku; verze manifestu je string podle požadavků npm. Spouštění scripts se děje příkazem npm run, samotné čtení JSON skripty nespouští. Podrobnosti jsou v oficiální package.json dokumentaci.

Tentýž text v JSON a JSONC

Platné pro podporovaný JSONC režim; není standardní JSON
{
  // lokální nastavení editoru
  "editor.tabSize": 2,
}
Syntaxe standardního JSON
{"editor.tabSize":2}

JSON validátor první ukázku odmítne kvůli komentáři a koncové čárce. VS Code settings.json používá vlastní podporovaný JSONC režim. Nepředpokládej, že jakýkoli soubor .json v editoru připouští stejné rozšíření; package.json je standardní JSON. Pokud potřebuješ komentovanou konfiguraci, musí stejný formát podporovat aplikace i její nástroje.

U vlastní konfigurace odděl tajemství od verzovaných výchozích voleb. Když kombinace souboru, prostředí a příkazové řádky mění hodnotu, zdokumentuj pořadí priority. Schéma vysvětluje typy a povolené položky; potřebné aplikační výchozí hodnoty doplňuje až načítací kód.