Hlavní rozdíl mezi lokálními a globálními balíčky je tento:
- lokální balíčky se instalují do adresáře, kde spouštíte
npm install <package-name>
, a jsou umístěny ve složcenode_modules
pod tímto adresářem - globální balíčky jsou všechny umístěny na jednom místě v systému (kde přesně, to závisí na vašem nastavení), bez ohledu na to, kde spouštíte
npm install -g <package-name>
V kódu můžete vyžadovat pouze lokální balíčky:
require('package-name')
tak kdy byste měli instalovat tak či onak?
Všechny balíčky by se obecně měly instalovat lokálně.
Tak máte jistotu, že můžete mít v počítači desítky aplikací, které v případě potřeby používají různé verze jednotlivých balíčků.
Aktualizace globálního balíčku by způsobila, že by všechny vaše projekty používaly novou verzi, a jak si dokážete představit, mohlo by to způsobit noční můry z hlediska údržby, protože některé balíčky by mohly porušit kompatibilitu s dalšími závislostmi apod.
Všechny projekty mají vlastní lokální verzi balíčku, i když se to může zdát jako plýtvání zdroji, je to minimální ve srovnání s možnými negativními důsledky.
Balíček by měl být nainstalován globálně, pokud poskytuje spustitelný příkaz, který se spouští ze shellu (CLI) a je opakovaně používán napříč projekty.
Spustitelné příkazy můžete nainstalovat i lokálně a spouštět je pomocí npx, ale některé balíčky je prostě lepší instalovat globálně.
Krásné příklady oblíbených globálních balíčků, které možná znáte, jsou
npm
create-react-app
vue-cli
grunt-cli
mocha
react-native-cli
gatsby-cli
forever
nodemon
.
Ve vašem systému jsou již pravděpodobně globálně nainstalovány některé balíčky. Můžete je zobrazit spuštěním příkazu
npm list -g --depth 0
na příkazovém řádku.
.