Nodea — logo

npm

npm (Node Package Manager) to domyślny menedżer pakietów dla środowiska Node.js oraz największe na świecie repozytorium otwartoźródłowych bibliotek JavaScript. Umożliwia instalowanie, aktualizowanie i publikowanie paczek kodu, a także zarządzanie zależnościami projektu. Dla większości aplikacji webowych i narzędzi frontendowych jest to element codziennego warsztatu programisty.

Jak działa npm?

Serce projektu opartego na npm stanowi plik package.json, który opisuje aplikację i wymienia jej zależności wraz z akceptowalnymi zakresami wersji. Polecenie npm install odczytuje ten plik, pobiera z rejestru wszystkie potrzebne pakiety (oraz ich zależności) i umieszcza je w katalogu node_modules. Powstaje przy tym plik package-lock.json, który zapisuje dokładne wersje, aby instalacja była powtarzalna na każdej maszynie i w każdym środowisku.

Poza instalacją npm pełni też rolę uruchamiacza skryptów — sekcja scripts w package.json pozwala definiować komendy w rodzaju npm run build czy npm run dev, które automatyzują budowanie, testowanie i uruchamianie projektu. Dzięki temu npm spina cały proces developmentu z narzędziami takimi jak Webpack czy transpilery.

Zastosowanie w praktyce

npm jest wykorzystywany w praktycznie każdym nowoczesnym projekcie frontendowym i wielu backendowych. Instalacja frameworka (React, Vue), biblioteki UI, narzędzia do lintingu czy zestawu testowego sprowadza się do jednego polecenia. Zależności trzymane są poza repozytorium Git — do wersjonowania trafiają jedynie package.json i lock, a katalog node_modules odtwarza się poleceniem instalacji.

Alternatywami dla npm są Yarn oraz pnpm, korzystające z tego samego rejestru pakietów, ale oferujące inne strategie cache'owania i instalacji. Warto pamiętać o higienie zależności: regularnym audycie bezpieczeństwa komendą npm audit i aktualizowaniu paczek, ponieważ podatności w zewnętrznych bibliotekach to realny wektor ataku na aplikacje.

Powiązane pojęcia

Najczęstsze pytania

Czym różni się npm od yarn?

Oba narzędzia zarządzają zależnościami JavaScript i korzystają z tego samego repozytorium pakietów npm. Yarn powstał jako szybsza i bardziej deterministyczna alternatywa dla wczesnych wersji npm, wprowadzając m.in. plik lock i lepsze cache'owanie. Współczesny npm nadrobił większość różnic, więc wybór jest dziś głównie kwestią preferencji zespołu.

Czym jest plik package.json?

package.json to plik konfiguracyjny projektu Node.js, który opisuje jego nazwę, wersję, skrypty uruchomieniowe oraz listę zależności wraz z zakresami wersji. Na jego podstawie komenda npm install pobiera i instaluje wszystkie potrzebne pakiety do katalogu node_modules, odtwarzając środowisko projektu na dowolnej maszynie.