závislosti npm vs závislosti dev

tl;dr

dependencies jsou vyžadovány naší aplikací za běhu. Balíčky jako react , redux a lodash jsou všechny příklady závislostí. devDependencies jsou potřeba pouze k vývoji nebo kompilaci vaší aplikace. Balíčky jako babel , enzyme a prettier jsou příklady devDependencies.

instalace npm

Skutečný rozdíl mezi dependencies a devDependencies je vidět při spuštění npm install .

Pokud spustíte npm install z adresáře obsahujícího soubor package.json (což běžně děláte například po klonování projektu).

✅ Budou nainstalovány všechny balíčky umístěné v dependencies
✅ Budou nainstalovány všechny balíčky umístěné v devDependencies

Pokud spustíte npm install <package-name> (co normálně děláte, když chcete přidat nový balíček do stávajícího projektu) tj. npm install react .

✅ Budou nainstalovány všechny balíčky umístěné v dependencies
❌ Žádný z balíčků umístěných v devDependencies nebude nainstalován

Přechodné závislosti

Pokud balíček A závisí na balíčku B a balíček B závisí na C, pak balíček C je tranzitivní závislost na balíčku A. To znamená, že aby balíček A fungoval správně, musí mít nainstalovaný balíček B. Aby však balíček B fungoval správně, je třeba nainstalovat balíček C. Proč to zmiňuji? No, dependencies a devDependencies také jinak zacházejí s tranzitivními závislostmi.

Když spustíte npm install z adresáře obsahujícího soubor package.json :

  • dependencies ✅ Stáhněte si všechny tranzitivní závislosti.
  • devDependencies ❌ Nestahujte žádné tranzitivní závislosti.

Určete závislosti vs. devDependencies

Od NPM 5, když spustíte npm install <package-name> , bude tento balíček automaticky uložen do vašeho dependencies ve vašem souboru package.json . Pokud jste chtěli určit, že konkrétní balíček by měl být zahrnut v devDependencies místo toho bych přidal značku --save-dev .

npm install prettier --save-dev

Instalace na produkční server

Často budete muset svůj projekt nainstalovat na produkční server. Když to uděláte, nebudete chtít instalovat devDependencies protože je zjevně nebudete potřebovat na svém produkčním serveru. Chcete-li nainstalovat pouze dependencies (a ne devDependencies ), můžete použít značku --production .

npm install --production

@khriztianmoreno