Widzę instrukcje instalacji pakietu z jednym z nich
npm install <package_name>
lub
npm install <package_name> --save
lub
npm install <package_name> --save-dev
Jaka jest różnica między tymi opcjami?
Odpowiedzi:
npm install <package_name> --save
instaluje pakiet i aktualizuje zależności w pliku package.json. Odkąd padło to pytanie nastąpiła zmiana na npm, taka, --save
która stała się opcją domyślną, więc nie trzeba używać--save
aktualizowania zależności.
npm install <package_name> --no_save
instaluje pakiet, ale nie aktualizuje zależności, które są wymienione w pliku package.json.
npm install <package_name> ---save-dev
aktualizuje devDependencies
w pakiecie. Są one używane tylko do lokalnego testowania i programowania.
Możesz przeczytać więcej na https://docs.npmjs.com/getting-started/using-a-package.json .
npm install pobiera 3 ekskluzywne, opcjonalne flagi, które zapisują lub aktualizują wersję pakietu w głównym pliku package.json:
-S, --save
: Pakiet pojawi się w Twoich zależnościach.
-D, --save-dev
: Pakiet pojawi się w twoim devDependencies.
-O, --save-optional
: Pakiet pojawi się w opcjonalnych zależnościach.
Podczas korzystania z dowolnej z powyższych opcji do zapisywania zależności w pliku package.json, istnieje dodatkowa, opcjonalna flaga:
-E, --save-exact
: Zapisane zależności zostaną skonfigurowane z dokładną wersją zamiast przy użyciu domyślnego operatora zakresu semver npm. Ponadto, jeśli masz plik npm-shrinkwrap.json, zostanie on również zaktualizowany.
<scope>
jest opcjonalne. Pakiet zostanie pobrany z rejestru związanego z określonym zakresem. Jeśli żaden rejestr nie jest powiązany z podanym zakresem, przyjmowany jest rejestr domyślny. Zobacz npm-scope.
Uwaga: jeśli nie dołączysz @ -symbol do nazwy zakresu, npm zinterpretuje to jako repozytorium GitHub, patrz poniżej. Po nazwach zakresów należy także umieścić ukośnik.
Przykłady:
npm install sax --save
npm install githubname/reponame
npm install @myorg/privatepackage
npm install node-tap --save-dev
npm install dtrace-provider --save-optional
npm install readable-stream --save --save-exact
Uwaga: Jeśli istnieje plik lub folder o nazwie <name>
w bieżącym katalogu roboczym, spróbuje go zainstalować i spróbuje pobrać pakiet według nazwy tylko wtedy, gdy jest nieprawidłowy.
(z oficjalnych dokumentów) https://docs.npmjs.com/cli/install
--save
opcja wydaje się nadal działać, nie jest już wymagana - pakiety są teraz domyślnie zapisywane w zależnościach . Logika jest teraz odwrócona - jeśli nie chcesz zapisywać paczki, musisz określić--no-save
--save
Flaga nie służy określonemu celowi.
Wcześniej, jak zauważono w innych odpowiedziach, --save
flaga aktualizowała zależności w package.json
pliku projektu , ale npm install
teraz domyślnie zawiera tę funkcję.
W tym momencie, jeśli chcesz zapobiec npm install
zapisywaniu zależności, musisz użyć --no-save
flagi.
Dziękuję Coruscate5 za wspomnienie o tym w komentarzu .
Więcej informacji w dokumentacji npm-install :
npm install domyślnie zapisuje wszystkie określone pakiety w zależnościach. Dodatkowo możesz kontrolować, gdzie i jak są zapisywane za pomocą dodatkowych flag:
-P, --save-prod: pakiet pojawi się w twoich zależnościach. Jest to ustawienie domyślne, chyba że obecne są -D lub -O.
-D, --save-dev: pakiet pojawi się w twoich devDependencies.
-O, --save-optional: pakiet pojawi się w Twoich opcjonalnych zależnościach.
--no-save: zapobiega zapisywaniu do zależności.
Podczas korzystania z dowolnej z powyższych opcji zapisywania zależności w pliku package.json istnieją dwie dodatkowe, opcjonalne flagi:
-E, --save-exact: zapisane zależności zostaną skonfigurowane z dokładną wersją, a nie przy użyciu domyślnego operatora zakresu semver npm.
-B, --save-bundle: Zapisane zależności również zostaną dodane do twojej listy bundleDependencies.