Soubor package.json je srdcem všech balíčků npm a bez ohledu na to, co můžete mít ve svém projektu, jedna věc je jistá:vždy tu bude soubor package.json. Z mnoha věcí obsažených v souboru package.json se dnes budeme bavit o správě závislostí.
Myslím, že většina vývojářů by souhlasila s tím, že správa závislostí nebyla nikdy snadným úkolem v raných dobách jazyků na vysoké úrovni, jako je JavaScript. Stačí se zeptat vývojáře v Javě, jaký byl život, než přišel Maven; nebo si možná promluvte s vývojářem Ruby o tom, jaký vliv má RubyGems na jejich vývoj. Totéž platí pro vývojáře Node.js. Bez správy závislostí npm a package.json by život nebyl tak snadný.
Vsuvky a vlnovky v číslech verzí
V rámci každého projektu podporovaného npm jsou závislosti sledovány a spravovány v souboru package.json prostřednictvím vlastnosti JSON „dependencies“. Normálně jsou tyto závislosti docela přímočaré a snadno pochopitelné. I když občas si můžete všimnout změn čísel verzí po použití --save
možnost v package.json. Když se na to podíváte dále, možná zjistíte, že čísla verzí mají nyní před sebou neznámý znak.
Konkrétně byste mohli skončit s něčím jako:
"dependencies": {
"express": "^3.9.2"
}
Nebo další možnost je:
"dependencies": {
"express": "~3.9.2"
}
Takže co tam nahoře vlastně dělá tato "^" (nebo "~") postava? Nebojte se, je to docela jednoduché a pokusím se to vysvětlit.
Znaky před čísly verzí jsou předpony, které označujeme jako znaky stříšky (^) a vlnovky (~). Přidávají je vývojáři (nebo npm), aby uvedli omezení, která čísla verzí softwaru lze použít jako závislost ve vašem projektu . Tato číselná schémata se řídí konvencí známou jako sémantické verzování nebo semver. Samotná skutečná čísla se používají v systému verzování k označení typu provedených změn, které vedly ke zvýšení čísla verze. Čísla (3, 9 a 2) ve výše uvedeném příkladu jsou označována jako hlavní, vedlejší a čísla polí zleva doprava.
Než se pustíme do podrobností o tom, co vlastně stříška a vlnovka znamenají, podívejme se na rychlý přehled toho, kdy by měla být každá číslice v čísle verze zvýšena při provádění změn v kódové základně:
- Zpětně nekompatibilní změny zvyšují hlavní číslice.
- Pokud je provedena nová (zpětně kompatibilní) změna, pak menší číslice se zvýší.
- Jednoduché opravy chyb (stávající funkce) zvyšují záplatu číslice.
Když spustíte npm install
v čistém adresáři projektu, nejvyšší pro každou závislost je nainstalována dostupná verze softwaru pro závislost, která je schopna splnit číslo verze uvedené v package.json. Pokud tedy není uvedeno žádné ^ nebo ~, použije se přesné uvedené číslo verze.
Avšak tím, že neuvedete přesnou verzi závislosti v souboru package.json a použijete znaky stříšky (^) nebo vlnovky (~), umožňuje npm rozšířit rozsah akceptovaných verzí. Když --save
Pokud je použit příznak, výchozí funkcí je předpona verze znakem stříšky. A samozřejmě to lze nakonfigurovat pomocí parametru save-prefix.
Pokud jde o sémantické verzování, zde je rozpis toho, jaké změny kódové základny znak stříšky umožní:
Vstříc umožňuje...
- Nové zpětně kompatibilní funkce
- Velký vnitřní refaktor
- Opravy chyb
- Ukončení podpory staré funkce (která je stále funkční)
Pomocí stříšky můžete získat vydání jako 3.. , kde znaky * budou odpovídat nejvyššímu dostupné číslo verze. Takže změny v hlavní číslici, jako je 4.0.0, nebudou v tomto případě použity.
Zdarma e-kniha:Git Essentials
Prohlédněte si našeho praktického průvodce učením Git s osvědčenými postupy, průmyslově uznávanými standardy a přiloženým cheat sheetem. Přestaňte používat příkazy Google Git a skutečně se naučte to!
Tilda umožňuje...
- Opravy chyb
S tilde můžete získat vydání jako 3.9.*. S vlnovkou jsou povoleny pouze nejnovější opravy chyb.
Můžeme tedy uzavřít tím, že pokud chcete zamknout, měl by být použit znak ~ číslo patche. Tuto možnost byste měli použít, když jste připraveni přijmout pouze opravy chyb a nechcete čelit případným neslučitelným změnám. Na druhou stranu je znak ^ zodpovědný za uzamčení patche a čísla vedlejších verzí. Používá se, když chcete mít zpětně kompatibilní nové funkce a také opravy chyb.
Závěr
Mějte na paměti, že velmi staré verze npm nepodporují ^ takže jej používejte opatrně. I když kterákoli z verzí npm vydaných v posledním roce by měla být v pořádku. Ve většině případů by vás to nemělo ovlivnit.
Tady opravdu neexistuje "nejlepší volba", protože oba mají své použití v různých scénářích. Vše záleží na požadavcích vašeho projektu a osobních preferencích. Pouhá znalost této funkce v semver a npm vám může ušetřit spoustu starostí a také čas tím, že nebudete muset neustále ručně aktualizovat verze závislostí.
Máte preferovanou volbu? Máte špatnou zkušenost s používáním stříšky nebo tildy? Dejte nám vědět v komentářích!