encyklopedia.space

npm

npm (skrót od Node Package Manager) jest menedżerem pakietów oraz rejestrem oprogramowania przeznaczonym dla środowiska Node.js. Umożliwia instalację, aktualizację, usuwanie oraz zarządzanie zależnościami projektów napisanych w języku JavaScript. Pakiety udostępniane w npm są przechowywane w publicznym rejestrze npm Registry, który jest dostępny online 24 godziny na dobę.

Historia

npm został stworzony w 2010 roku przez Isaaca Z Zerquera w firmie Joyent, w ramach rozwoju platformy Node.js. Pierwsza publiczna wersja (0.1.0) ukazała się w 2010 roku. Od tego czasu projekt przeszedł liczne zmiany, a od 2014 roku jest rozwijany i utrzymywany przez organizację OpenJS Foundation.

Budowa i komponenty

  • CLI (Command‑Line Interface) – interfejs wiersza poleceń, dostępny jako polecenie npm, umożliwiający wykonywanie operacji na pakietach.
  • npm Registry – centralny serwis przechowujący ponad 1 milion pakietów open‑source.
  • package.json – plik konfiguracyjny projektu opisujący jego zależności, skrypty budowania oraz metadane.
  • node_modules – katalog, w którym instalowane są wszystkie zależności projektu.

Podstawowe polecenia

Poniżej przedstawiono najczęściej używane komendy npm:

npm init            # tworzy nowy plik package.json
npm install <pakiet>   # instalacja pakietu (lokalnie lub globalnie)
npm uninstall <pakiet> # usunięcie pakietu
npm update           # aktualizacja zainstalowanych pakietów
npm publish          # publikacja własnego pakietu w rejestrze
npm login            # logowanie do konta npm
npm view <pakiet>    # wyświetlenie informacji o pakiecie

Semantyka wersji (SemVer)

npm stosuje semantyczne wersjonowanie (semver) do oznaczania wersji pakietów. Format wersji to MAJOR.MINOR.PATCH, gdzie:

  • MAJOR – zmiana niekompatybilna wstecznie;
  • MINOR – dodanie nowych funkcjonalności zachowujących kompatybilność;
  • PATCH – naprawa błędów niezmieniająca interfejsu.

Dzięki temu deweloperzy mogą bezpiecznie określać zakresy wersji w sekcji dependencies pliku package.json.

Alternatywy i powiązane narzędzia

W ekosystemie JavaScript istnieją także inne menedżery pakietów, które współpracują lub rywalizują z npm:

  • Yarn – opracowany przez Facebook, zapewnia szybsze instalacje i deterministyczne blokowanie wersji.
  • pnpm – wykorzystuje symlinki, co zmniejsza zużycie dysku.
  • Bower – starszy menedżer front‑endowy, obecnie uznawany za przestarzały.

Ekosystem i znaczenie

npm stał się kluczowym elementem współczesnego rozwoju oprogramowania webowego. Dzięki niemu deweloperzy mogą szybko dodawać biblioteki takie jak React, Express, Lodash czy Webpack. Ułatwia to budowę aplikacji, przyspiesza procesy CI/CD i promuje kulturę open‑source.

Bezpieczeństwo

W ciągu lat npm stał się celem ataków polegających na wstrzykiwaniu złośliwego kodu do popularnych pakietów. Dlatego wprowadzono szereg mechanizmów ochronnych:

Statystyki i popularność

Według danych z 2023 roku npm jest najczęściej używanym menedżerem pakietów w świecie JavaScript, a jego rejestr przetwarza ponad 50 milionów pobrań dziennie.

Zobacz także