NPM (Node Package Manager) to domyślny menedżer pakietów używany w środowisku uruchomieniowym Javascript w NodeJS. Dzięki NPM możemy instalować różne paczki/zależności do swojego projektu.

Domyślne zachowanie npm install

Instalacja paczki jest bardzo prosta, wystarczy uruchomić komendę npm install [nazwa_paczki] i zacznie się ona instalować w naszym projekcie. Możemy tą komendę wywołać w wersji skróconej, tj. npm i [nazwa_paczki] i efekt jest taki sam. Od wersji NPM 5.0.0 komenda ta zapisze zależność do sekcji dependencies w pliku package.json oraz pobierze całą paczkę wraz z zależnościami pobieranej paczki do folderu node_modules. Przed wersją NPM 5.0.0 trzeba było dodać dodatkową flagę --save ale teraz nie jest to konieczne.

Dodatkowe flagi

Do komendy npm install możemy przekazać odpowiednie flagi, dzięki którym możemy kontrolować gdzie i jak zostanie zapisana zależność:

  • --save-prod lub -P: Paczka zostanie zapisana do sekcji dependencies w pliku package.json. Jest to domyślne zachowanie, chyba że zostanie wywołana inna komenda, np. -D lub -O.
npm install --save-prod # === npm i -P
  • –-save-dev lub -D: Paczka zostanie zapisana do sekcji devDependencies. Development dependencies to paczki wykorzystywane tylko podczas pracy nad aplikacją jak np. linter, test runner itp. Te zależności nie wpływają na wynik, czy wygląd aplikacji.
npm install --save-dev # === npm i -D
  • –-save-optional lub -O: Paczka zostanie zapisana do sekcji optionalDependencies. Optional dependencies to takie paczki, które zostaną wykorzystane dopiero wtedy, gdy konkretna funkcjonalność będzie użyta. Paczka ta nie będzie wymagana, gdy dana funkcjonalność jej nie użyje.
npm install -save-optional # === npm i -O
  • –-no-save: Paczka nie zostanie zapisana w pliku package.json ale nadal zostanie pobrana do folderu node_modules.
npm install --no-save

Gdy użyjemy którejkolwiek komendy, która zapisze paczkę do pliku package.json to mamy możliwość użycia dwóch dodatkowych flag:

  • –-save-exact lub -E: Paczka zostanie zapisana z dokładnie określoną wersją zamiast z domyślnie używanym operatorem semver.
npm install --save-exact # lub npm i -E
  • --save-bundle lub -B: Paczka zostanie zapisana do sekcji bundledDependencies.
npm install --save-bundle

Źródła