npm

Domyślny menedżer pakietów dla Node.js, służący do instalowania i zarządzania bibliotekami JavaScript. Korzysta z największego rejestru pakietów na świecie.

npm (Node Package Manager) to domyślny menedżer pakietów dla środowiska Node.js. Służy do instalowania, aktualizowania i usuwania bibliotek JavaScript oraz do zarządzania zależnościami w Twoim projekcie. Instaluje się razem z Node.js, więc gdy masz Node, masz i npm. Korzysta przy tym z rejestru npm (npm registry) — największego repozytorium otwartego kodu na świecie, w którym leżą miliony gotowych paczek.

Do czego to służy

Sednem pracy z npm jest plik package.json. To metryczka Twojego projektu: nazwa, wersja, skrypty i lista zależności. Kiedy ktoś sklonuje repozytorium i odpali npm install, npm czyta ten plik i ściąga dokładnie te biblioteki, których potrzeba — razem z ich zależnościami. Wszystko ląduje w katalogu node_modules, a dokładne wersje zapisują się w package-lock.json, żeby u Ciebie i u kolegi zainstalowało się to samo.

npm to też klient wiersza poleceń (CLI). Przez niego publikujesz własne paczki, uruchamiasz skrypty zdefiniowane w package.json (np. npm run build) i wersjonujesz projekt. Wersje pakietów trzymają się konwencji SemVer (major.minor.patch), więc zapis ^4.18.0 mówi npm: „bierz najnowszą zgodną, ale nie przeskakuj na nowy major”.

Przykład z praktyki

Zaczynasz nowy projekt. Robisz npm init -y, żeby wygenerować package.json, a potem instalujesz framework webowy:

  • npm install express — dodaje Express do zależności produkcyjnych,
  • npm install --save-dev jest — dokłada Jest tylko do developmentu (testy),
  • npx create-react-app moja-apka — uruchamia paczkę bez globalnej instalacji (npx to towarzysz npm).

Na co uważać

Kilka rzeczy, na których początkujący się przejeżdżają:

  • Nie commituj node_modules do gita — ten katalog potrafi ważyć setki MB i odtwarza się z npm install. Wrzuć go do .gitignore.
  • Commituj package-lock.json. To on gwarantuje powtarzalność. W CI/CD używaj npm ci zamiast npm install — jest szybszy i instaluje ściśle z locka.
  • npm to nie jedyny gracz. Yarn i pnpm robią to samo, często szybciej i oszczędniej dyskowo, ale npm jest standardem domyślnym.
  • Pilnuj bezpieczeństwa. npm audit pokaże znane podatności w zależnościach — warto rzucić okiem, zanim coś trafi na produkcję.

Pojęcia powiązane: Node.js, package.json, node_modules, SemVer, yarn, pnpm, npx, rejestr npm.