Jaka jest opcja --save dla instalacji npm?

2034

Widziałem samouczek, w którym polecenie brzmiało:

npm install --save

Co oznacza --saveopcja?

Nie można znaleźć odpowiedzi w Google.

Dmitri
źródło
32
@ --save: Package will appear in your dependencies.
Tom-
7
Możesz użyć skrótu -S i -D tam -S to --save, a -D to '--save-dev. --save (lub prosty -S): Pakiet pojawi się w twoich zależnościach. --save-dev (lub prosty -D): Pakiet pojawi się w twoich devDependencies.
Gil Epshtain
5
@ WiredPrairie dzięki, że próbowałem npm install (--help | -h | -help ..)i nic.
juliangonzalez
2
dzięki @Dmitri, miałem ten sam problem. chodź NPM dodaj to do swojej strony MAN dla swojego narzędzia
Erdinc Ay
67
Nie rozumiem uzasadnienia decyzji o usunięciu choćby tylko wzmianki o tej opcji z dokumentacji i strony pomocy, nie umniejszając jej przynajmniej, przynajmniej z ostrzeżeniem w samym narzędziu. Tymczasem nowicjusze są narażeni na to poprzez zillions tutoriali. Następnie próbują dowiedzieć się, co to robi, i muszą marnować 20 minut na przeglądanie dokumentów, aby w końcu przeczytać historię npm na stackoverflow. Co dziwne, zapobieganie tak ogromnej stracie czasu (jeśli popularność pytania jest jakąkolwiek wskazówką) jest jednym z celów dokumentacji.
Michael Ekoka,

Odpowiedzi:

2475

Zaktualizuj npm 5:

Począwszy od npm 5.0.0 , zainstalowane moduły są domyślnie dodawane jako zależność, więc --saveopcja nie jest już potrzebna. Inne opcje zapisu nadal istnieją i są wymienione w dokumentacji dla npm install.

Oryginalna odpowiedź:

Przed wersją 5 NPM po prostu node_modulesdomyślnie instalował pakiet . Gdy próbujesz zainstalować zależności dla swojej aplikacji / modułu, musisz je najpierw zainstalować, a następnie dodać (wraz z odpowiednim numerem wersji) do dependenciessekcji swojego package.json.

Ta --saveopcja nakazała NPM automatyczne dołączanie paczki do dependenciessekcji twojej package.json, co oszczędza ci dodatkowego kroku.

Ponadto, istnieją uzupełniające opcje --save-devi --save-optionalktóre zapisać pakiet mocy devDependenciesi optionalDependenciesodpowiednio. Jest to przydatne podczas instalowania pakietów przeznaczonych tylko dla programistów, takich jak gruntbiblioteka testowa.

voithos
źródło
139
Poważnie, czy jest to gdziekolwiek udokumentowane? Nie mogłem go znaleźć w Google ani w npmpomocy.
Christian Ternus
111
Byłoby miło, gdyby dokumentacja tego pojawiała się, gdy npm install --helpbyła używana.
Mark Stosberg,
11
@ jimsmith: Od wersji npm 5.0 jest to ustawienie domyślne.
voithos
3
Czy „npm update” w NPM 5 domyślnie modyfikuje pakiet.json?
Igor Okorokov
6
@voithos Dla mnie NPM 5 aktualizuje wersje pakietu w package.json. Aby tego uniknąć, muszę uruchomić „aktualizację npm - no-save”
Igor Okorokov
219

Aby dodać pakiet w zależnościach:

npm install my_dep --save

lub

npm install my_dep -S

lub

npm i my_dep -S

Aby dodać pakiet w devDependencies

npm install my_test_framework --save-dev

lub

npm install my_test_framework -D

lub

npm i my_test_framework -D

pakiet.json wprowadź opis zdjęcia tutaj

Joe L.
źródło
30
zachowaj ostrożność, używając wersji skrótów, -S -Dponieważ muszą one być pisane wielkimi literami. Zawsze popełniam ten błąd i npm nie narzeka ani nie dodaje go do package.json
Murray Wynnes
7
Nie narzeka, ponieważ -s(mała litera) dotyczy tej --silentopcji, a -ddotyczy informacji loglevel, które są prawidłowymi skrótami.
tanvi
131

Nic nie zrobi, jeśli nie masz package.jsonpliku. Zacznij od uruchomienia, npm initaby je utworzyć. Następnie zwraca się npm install --saveani npm install --save-devczy npm install --save-optionalbędzie aktualizacja package.jsondo listy swoich zależności.

Nick Retallack
źródło
37
Właśnie dowiedziałem się, że działa z mocą wsteczną (wydaje się). Możesz uruchomić swój npm install --save-devpierwszy, potem npm init, a pakiet.json zostanie zapełniony.
Jacob Wang
20

zgodnie z NPM Doc

wprowadź opis zdjęcia tutaj

Wygląda więc na to, że po uruchomieniu npm install package_namezależność pakietu powinna zostać automatycznie dodana do pliku package.json, prawda?

ROROROOROROR
źródło
1
Myślę, że - no-save ma być używany, gdy chcesz funkcjonalność npm npm <5
Abhiroj Panwar
Rozumiem, npm config ls -lpokazuje, że domyślnie wszystkie opcje save-xxx są fałszywe, tylko save jest prawdą.
ROROROOROROR
Wygląda na to, że npm nie uruchomi żadnego błędu, jeśli umieścisz opcję none exist, jak --save-xxxxxx. Po prostu zignoruj ​​to, a zachowanie domyślne - save-prod będzie miało wpływ. Może --save pochodzi ze starej wersji npm.
Leon
13

Można również użyć -S, -Dlub -Pktóre są równoznaczne z zapisaniem się do uzależnienia pakiet aplikacji, w zależności dev lub uzależnienia prod. Zobacz więcej skrótów NPM poniżej:

-v: --version
-h, -?, --help, -H: --usage
-s, --silent: --loglevel silent
-q, --quiet: --loglevel warn
-d: --loglevel info
-dd, --verbose: --loglevel verbose
-ddd: --loglevel silly
-g: --global
-C: --prefix
-l: --long
-m: --message
-p, --porcelain: --parseable
-reg: --registry
-f: --force
-desc: --description
-S: --save
-P: --save-prod
-D: --save-dev
-O: --save-optional
-B: --save-bundle
-E: --save-exact
-y: --yes
-n: --yes false
ll and la commands: ls --long

Tę listę skrótów można uzyskać, uruchamiając następujące polecenie:

$ npm help 7 config
DevWL
źródło
7

Począwszy od npm 5, korzystniej jest używać --save-prod(lub -P) niż --saverobić to samo, jak podano w instalacji npm . Do tej pory --savenadal działa, jeśli pod warunkiem.

temat
źródło
To musi iść na górę, aby uratować nas wszystkich odmiany lektury, sprzeczności i przejmowania wątków. SO musi zachęcać do zwięzłych odpowiedzi za pomocą prawidłowych adresów URL, abyśmy mogli uniknąć CRUD i kontynuować pracę. (Quora ma fajne „Czy ta odpowiedź jest istotna” itd., A nawet wcześniej sugerowałem to SO) \ n Ssie, że oficjalny dokument węzła nie wspomina o starszych (nieistniejących) opcjach i większość odniesień do węzłów wydaje się być -5,0, wysyłając nasze głowy na spin.
killjoy
6

Począwszy od npm 5, npm będzie teraz zapisywać domyślnie. Jeśli chcesz, aby npm działał w podobny sposób (bez automatycznego zapisywania), jak działał w poprzednich wersjach, możesz zaktualizować opcję konfiguracji, aby włączyć automatyczne zapisywanie jak poniżej.

npm config set save false

Aby uzyskać bieżące ustawienie, możesz wykonać następujące polecenie:

npm config get save

Źródło: https://blog.pusher.com/what-you-need-know-npm-5/

Rajesh Kumar
źródło
6

npm install package_x --save

Dany pakiet (pakiet_x) zostanie zapisany w pliku package.json wewnątrz zależności. jeśli dodasz

npm install <<package_x>> --save-dev

wtedy zostanie zapisany w devDependencies .

Nizam Deen
źródło
12
Jaka jest twoja odpowiedź, której nie udzieliły jeszcze inne odpowiedzi?
Pedro A
@Pedro A - Podejrzewam, że facet przepisuje to, co właśnie przeczytał; potem jego przyjaciele oddają mu głosy.
IAM_AL_X
3

Najłatwiejszym (i bardziej niesamowitym) sposobem na dodanie zależności do pliku package.json jest zrobienie tego z wiersza poleceń, oznaczenie polecenia npm install poleceniem --save lub --save-dev, w zależności od tego, jak chcesz użyj tej zależności.

Rubin bhandari
źródło
3

npm install --savelub npm install --save-devdlaczego wybieramy 1 opcje między tymi dwoma podczas instalowania pakietu w naszym projekcie.

z powyższych odpowiedzi jasno wynika, że npm install --savedodasz wpis w dependencypolu pacakage.jsonpliku i drugim w dev-dependency.

Powstaje więc pytanie, dlaczego potrzebujemy wpisu naszego modułu instalacyjnego do pliku pacakge.json, ponieważ za każdym razem, gdy zameldujemy się w kodzie gitlub podamy go komuś , zawsze dajemy go lub sprawdzamy bez, node-modulesponieważ jest on bardzo duży i dostępny również w wspólne miejsce, aby tego uniknąć, robimy to.

więc w jaki sposób inna osoba otrzyma wszystkie moduły, które są specjalnie lub potrzebne do tego projektu, więc odpowiedzią jest from the package.jsonplik zawierający wpisy wszystkich wymaganych pakietów do uruchomienia lub opracowania tego projektu.

więc po otrzymaniu we simply need to run the npm installpolecenia code odczyta plik package.json i zainstaluje niezbędne wymagane pakiety.

Sunny Goel
źródło
2

npm i (nazwa pakietu) - zapisz

Po prostu, używając powyższej komendy, nie będziemy musieli zapisywać nazwy pakietu w pliku package.json, to automatycznie dodamy jego nazwę i zależność od wersji, której będziesz potrzebować, kiedy przejdziesz do produkcji lub konfiguracji innym razem.

npm pomoc w instalacji

Powyższe polecenie pomoże znaleźć więcej opcji i poprawić def. Pokazane na rys wprowadź opis zdjęcia tutaj

Nitin.
źródło