Pedpokládám, že každý kdo něco píše v JavaScriptu, nebo TypeScriptu zná
Pro ty co jsou tu prvně: největší a nejrychleji rostoucí repozitář (knihovna) javascriptových modulů. Samozřejmě se vším co k tomu patří.
Vedle toho, že NPM je nějaký síťový, skrze internet dostupný, centrálně spravovaný, byste třeba někdy chtěli dosáhnout stejného chování balíčků pomocí require
pro nějaké vlastní, lokálně vyvíjené moduly, které neopustily disk vašeho notebooku.
NPM lokálně
Příklad
Mám někde na disku adresář, ve kterém mám vlastní implementaci super výkoné matematické knihovny:
zdrojový kód mé knihovny:
// ./my-math-lib/index.js function sum(a, b) { return a + b; } module.exports = { sum, }
package.json v adresáři s knihovnou:
{ "name": "my-math-lib", "version": "1.0.0", "description": "my super cool math lib", "main": "index.js", "scripts": { "test": "jest" }, "author": "Josef Podany", "license": "ISC" }
Tak a tenhle modul bych chtěl pak používat v dalších svých projektech stejně jako jakýkoliv jiný modul, který pochází z NPM.
Jak na to?
1. zaregistrování modulu
V adresáři s balíčkem ./my-math-lib
spustím následující:
npm link
Tím dojde k vytvoření sym linku do globálního prostoru NPM balíčků na vašem stroji. O tom, že balíček se zaregistroval se přesvědčíte následovně:
npm -g list --depth 0
2. samotné využití požadovaného balíčku
Pak už jen stačí v adresáři s projektem, kde chcete váš balíček používat spustit následující:
npm link my-math-lib
V podstatě náhrada za
npm install my-math-lib
Protože příkaz install
by hledal a stahoval balíček z centrálního, síťového repozitáře a to nechceme.
Pak už můžeme v projekt klasicky použit require
jak jsme zvyklý:
const myMathLib = require('my-math-lib'); const a = myMathLib.sum(2, 4);
Resume
Celý fígl je v tom, že příkaz npm link
vytváří symlinky mezi globálnín NPM uložištem na vašem stroji a adresářem node_modules
v daném projektu.
Super je, že zůstává plně zachována plná funkcionalita práce s baličky, takže funguje i toto:
npm uninstall my-math-lib
Tím dojde k odebrání balíčku z daného projketu, nicméně sdílený balíček půjde dál využívat v ostatních projektech.
Pokud budete chtít úplně zrušit sdílení lokálního balíčku, pak následovně:
npm uninstall -g my-math-lib
Elegantní a hezhé řešení…