Konfigurace package.json
Pokud vyvíjíte aplikaci Node.js s mnoha balíčky npm, není neobvyklé, že při sestavování projektu dojde k upozorněním nebo chybám, pokud byl aktualizován jeden nebo více balíčků. Někdy dochází ke konfliktu verzí nebo je verze balíčku zastaralá. Tady je několik rychlých tipů, které vám pomůžou nakonfigurovat soubor package.json a pochopit, co se děje, když se zobrazí upozornění nebo chyby. Nejedná se o úplnou příručku pro package.json a zaměřuje se pouze na správu verzí balíčků npm.
Systém správy verzí balíčků npm má striktní pravidla. Formát verze je následující:
[major].[minor].[patch]
Řekněme, že máte v aplikaci balíček s verzí 5.2.1. Hlavní verze je 5, podverze je 2 a oprava je 1.
- V aktualizaci hlavní verze balíček obsahuje nové funkce, které jsou zpětně nekompatibilní, tj. zásadní změny.
- V aktualizaci podverze byly do balíčku přidány nové funkce, které jsou zpětně kompatibilní s dřívějšími verzemi balíčků.
- V aktualizaci oprav jsou zahrnuty některé opravy chyb. Opravy chyb jsou vždy zpětně kompatibilní.
Stojí za zmínku, že některé funkce balíčku npm mají závislosti. Pokud chcete například použít novou funkci balíčku kompilátoru TypeScriptu (ts-loader) s webpackem, je možné, že byste také museli aktualizovat balíček npm webpacku a balíček webpack-cli.
Pro usnadnění správy verzí balíčků npm podporuje několik notací, které můžete použít v souboru package.json. Tyto zápisy můžete použít k řízení typu aktualizací balíčků, které chcete v aplikaci přijmout.
Řekněme, že používáte React a potřebujete zahrnout balíček npm react a react-dom . Můžete to zadat několika způsoby v souboru package.json . Můžete například zadat použití přesné verze balíčku následujícím způsobem.
"dependencies": {
"react": "16.4.2",
"react-dom": "16.4.2",
},
Při použití předchozího zápisu bude npm vždy získat přesnou zadanou verzi 16.4.2.
Pomocí speciální notace můžete omezit aktualizace na aktualizace oprav (opravy chyb). V tomto příkladu:
"dependencies": {
"react": "~16.4.2",
"react-dom": "~16.4.2",
},
Znak tilda (~) slouží k tomu, aby npm při opravě pouze aktualizoval balíček. Npm tedy může aktualizovat react 16.4.2 na verzi 16.4.3 (nebo 16.4.4 atd.), ale nepřijme aktualizaci hlavní nebo podverze. Proto se verze 16.4.2 neaktualizuje na verzi 16.5.0.
Pomocí symbolu stříšky (^) můžete také určit, že npm může aktualizovat číslo podverze.
"dependencies": {
"react": "^16.4.2",
"react-dom": "^16.4.2",
},
Pomocí tohoto zápisu může npm aktualizovat react 16.4.2 na 16.5.0 (nebo 16.5.1, 16.6.0 atd.), ale nepřijme aktualizaci na hlavní verzi. Proto se verze 16.4.2 neaktualizuje na verzi 17.0.0.
Když npm aktualizuje balíčky, vygeneruje soubor package-lock.json , který obsahuje seznam skutečných verzí balíčků npm použitých v aplikaci, včetně všech vnořených balíčků. I když package.json řídí přímé závislosti pro vaši aplikaci, neřídí vnořené závislosti (jiné balíčky npm vyžadované konkrétním balíčkem npm). Pokud potřebujete zajistit, aby ostatní vývojáři a testeři používali přesné balíčky, které používáte, včetně vnořených balíčků, můžete ve vývojovém cyklu použít soubor package-lock.json . Další informace najdete v souboru package-lock.json v dokumentaci k npm.
V sadě Visual Studio se soubor package-lock.json nepřidá do projektu, ale najdete ho ve složce projektu.