Npm (tarkvara)

npm (Node Package Manager) on JavaScripti programmeerimiskeele jaoks loodud paketihaldur. See on JavaScripti käituskeskkonna Node.js standardne paketihaldur. 

See koosneb kolmest eraldi komponendist: veebileht, käsurida ehk tekstiline kasutajaliides ning võrgus olev register (npm registry), mida kasutatakse avalike ja privaatsete pakkide hoiustamiseks. Register on sisuliselt avalik JavaScripti tarkvara andmebaas. Tegemist on maailma suurima tarkvararegistriga. Registris kättesaadavaid pakette on võimalik näha ja otsida npm veebilehel.

Ajalugu 
npm on kirjutatud täielikult JavaScripti keele baasil. Selle töötas välja Isaac Z. Schlueter.  

Enne npmi loomist töötas Schlueter Yahoos, kus oli tal harjumuseks saanud oma töös paketihalduri kasutamine. 2009. aastal, pärast Node.js'i tulekut hakkas ta npmi kallal töötama, sest kuigi Node.js'i arendus liikus tema arvates õiges suunas, tundis ta siiski puudust korralikust paketihaldurist. Kuna ta oli kokku puutunud mitmesuguste paketihalduritega, millest ükski polnud veatu ning mõni oli lausa kohutav, oli tema jaoks oluline, et Node'i pakettide ja moodulite haldamine toimuks valutult.

Kirjeldus 
npm on märgitud Node.jsi installimisel soovitatavaks funktsiooniks. npm koosneb käsurea kasutajaliidesest, mis suhtleb võrgus oleva registriga. See võimaldab kasutajatel lihtsasti alla laadida ja kasutada teiste kirjutatud koodi ning ka enda loodud mooduleid vaevata levitada. Registris olevad paketid on CommonJS-i vormingus ja sisaldavad metaandmete faili JSON-i vormingus. Npmi registris on praeguseks saadaval üle miljoni paketi. Kuna registrisse lisatavate pakettide päritolu ei kontrollita, võib seal esineda halva kvaliteediga ja isegi pahatahtlikke mooduleid. Eraldi pakettide päritolu kontrollimise asemel loodab npm kasutajatele, et need vajadusel annaksid teada süsteemi sattunud pakettidest, mis rikuvad npmi sätestatud reegleid. Lisaks sellele on võimalik kasutajatel pakettide usaldusväärsust hinnata veebilehel kuvatud statistika (allalaadimiste arv, sõltuvate pakettide arv jne) põhjal.

Kasutus 
npm saab hallata nii konkreetse projekti lokaalseid sõltuvusi kui ka globaalselt installitud JavaScripti tööriistu. Kasutades npmi lokaalse projekti pakettide haldamiseks, on package.json faili abil ühe käsuga võimalik installida kõik projekti sõltuvused. Failis package.json saab igale sõltuvusele määrata kehtivate versioonide vahemiku, mis võimaldab arendajatel sõltuvusi automaatselt värskendada, vältides samal ajal soovimatuid muudatusi, mis võivad rakenduse katki teha.

Alternatiivid 
Kuigi npmi kasutatakse JavaScripti paketihaldurite seast kõige rohkem, leidub sellele ka avatud lähtekoodiga alternatiive. Nendest kõige populaarsemad on ied, pnpm, npmd ja yarn, millest viimase lõi 2016. aasta oktoobris Facebook. Kõik mainitud haldurid kasutavad vaikimisi ka avalikku npm-registrit, kuid pakuvad kasutajale ka muid variante, et kasutaja saaks valida selle, millega arvab saavutavat enda jaoks olulistes aspektides parema jõudluse.

Viited 

Tarkvara