Maven v Javě má centrální repository a přísné verzování. NPM má 200 000 balíčků, left-pad incident a dependency hell. Jak přežít v NPM ekosystému a nešlápnout na minu.
package.json a semver¶
Semantic versioning: MAJOR.MINOR.PATCH. ^1.2.3 = kompatibilní s 1.x
(default). ~1.2.3 = patch only. Pro produkci doporučujeme přesné verze
nebo shrinkwrap/lockfile.
{
"dependencies": {
"express": "^4.13.3",
"lodash": "~4.17.0",
"moment": "2.11.2"
},
"devDependencies": {
"mocha": "^2.3.4",
"eslint": "^1.10.0"
}
}
npm shrinkwrap¶
npm shrinkwrap zamkne přesné verze všech závislostí (včetně tranzitivních).
Generuje npm-shrinkwrap.json — commitujte do gitu. Bez shrinkwrap může
npm install nainstalovat jiné verze na CI než lokálně.
Bezpečnost¶
npm audit kontroluje známé zranitelnosti. Pravidelně spouštějte
v CI pipeline. Minimalizujte závislosti — každý balíček je potenciální útočný vektor.
Vyhodnoťte: potřebuji opravdu knihovnu pro left-pad?
Private registry¶
Pro interní balíčky: Verdaccio (open-source npm proxy/registry), npm Enterprise, nebo Artifactory. Cachuje veřejné balíčky a hostuje privátní.
Disciplína v dependency management¶
NPM ekosystém je mocný ale divoký. Lockfiles, audit, minimální závislosti — základy pro spolehlivý JavaScript projekt.