Co oznacza -save-dev w npm install grunt --save-dev

277

Właśnie zacząłem używać Grunt.js . Jest to dość trudne do skonfigurowania i jestem na etapie tworzenia package.jsonpliku.

Po tym samouczku napisano, że istnieją 3 sposoby utworzenia package.jsonpliku.

Pierwszy to zrobić npm install grunt --save-dev

Ale co to --save-devznaczy? Próbowałem szukać, ale na próżno.

Vennsoh
źródło
Myślę, że udało mi się znaleźć kilka odpowiedzi. gruntjs.com/getting-started - npmjs.org/doc/json.html#devDependencies
Vennsoh
link do samouczka uszkodzony
SteveC

Odpowiedzi:

317

--save-dev: Pakiet pojawi się w twoich devDependencies.

Według dokumentacji instalacyjnej npm .

Jeśli ktoś planuje pobrać moduł i używać go w swoim programie, prawdopodobnie nie chce lub nie musi pobierać i nie budować używanego zewnętrznego środowiska testowego lub dokumentacji.

Innymi słowy, po uruchomieniu npm installdevDependencies twojego projektu zostaną zainstalowane, ale devDependencies dla wszystkich pakietów, od których zależy twoja aplikacja, nie zostaną zainstalowane; ponadto inne aplikacje, w których aplikacja jest zależna, nie muszą instalować aplikacji devDependencies. Takie moduły powinny być potrzebne tylko podczas tworzenia aplikacji (np. Chrząknięcie, mokka itp.).

Zgodnie z dokumentacją package.json

Edycja: próba wizualizacji tego, co npm install:

  • Twój projekt
    • zainstalowana zależność
      • zainstalowana zależność
        • zainstalowana zależność
        • devDependency NIE zainstalowano
      • devDependency NIE zainstalowano
    • Zainstalowano devDependency
      • zainstalowana zależność
      • devDependency NIE zainstalowano
Andreas Hultgren
źródło
2
domyślnie nie będzie instalowany z zależnościami deweloperów, ale jak mam wtedy zainstalować? npm install --devflaga?
StanleyZheng
4
@stanzheng Nie jestem pewien, co musisz wiedzieć. Jeśli pracujesz nad projektem i go uruchomisz npm install, zostaną również zainstalowane devDependencies projektu. Nie chcesz instalować devDependencies zależności. Jeśli chcesz rozwinąć na pakiecie npm, zrób git clone xxxten projekt i uruchom npm installw nim.
Andreas Hultgren
3
„devDependencies dla zależności aplikacji nie zostaną zainstalowane po uruchomieniu npm install” jest niepoprawny. Jeśli mam plik package.json i zawiera on tylko „devDependencies” z moimi pakietami npm, a następnie wpisuję „npm install”, te „devDependecies” zostaną zainstalowane.
rdzeń
6
Próbowałem zrozumieć, ale nie zrozumiałem. Potem próbowałem zrozumieć wizualizację, ale nie zrozumiałem. Co oznacza każdy punktor? Folder? Co oznacza przekreślony element? Nieistniejący katalog? Jeśli to prawda, w jaki sposób możesz wymienić listę nieistniejących rzeczy?
Rafael Eyng
8
Aby wyjaśnić, jeśli npm installzostanie uruchomiony w twoim projekcie, wszystkie devDependencies w pakiecie.json zostaną zainstalowane, ale jeśli spakujesz swój projekt jako nowy pakiet npm i opublikujesz go, gdy ktoś inny zainstaluje twój pakiet z instalacją npm, devDependencies nie będzie zainstalowane w ich systemie. Czy to prawda? @stanzheng lub możesz uruchomić npm install --produkcja, aby zainstalować wszystko w pakiecie.json oprócz zależności dev
rwilson04
99

Istnieją (co najmniej) dwa typy zależności pakietów, które można wskazać w plikach package.json:

  1. Pakiety wymagane do korzystania z modułu są wymienione we właściwości „zależności”. Za pomocą npm możesz dodać te zależności do pliku package.json w ten sposób:

    npm install --save packageName
  2. Pakiety wymagane do opracowania modułu są wymienione we właściwości „devDependencies”. Te pakiety nie są konieczne, aby inni mogli korzystać z modułu, ale jeśli chcą pomóc w rozwoju modułu, te pakiety będą potrzebne. Za pomocą npm możesz dodać te devDependencies do pliku package.json w ten sposób:

    npm install --save-dev packageName
Lonnie Best
źródło
35

Aby dodać odpowiedź Andreasa, możesz zainstalować tylko zależności, używając:

npm install --production
głowica maszynowa115
źródło
7

Dokumentacja od npm dla npm install <package-name> --savei npm install <package-name> --save-devmożna ją znaleźć tutaj:

https://docs.npmjs.com/getting-started/using-a-package.json#the-save-and-save-dev-install-flags

package.jsonPlik deklaruje metadane o module rozwijasz. Oba wyżej wymienione polecenia modyfikują ten package.jsonplik. --savezadeklaruje zainstalowany pakiet (w tym przypadku grunt) jako zależność dla twojego modułu; --save-devzadeklaruje to jako zależność dla rozwoju twojego modułu.

Zadaj sobie pytanie: czy zainstalowany pakiet będzie wymagany do korzystania z mojego modułu, czy tylko do jego rozwijania?

Niko Kovacevic
źródło
6

Gdy użyjesz parametru „--save”, twoja zależność przejdzie do # 1 poniżej w pliku package.json. Gdy użyjesz parametru „--save-dev”, twoja zależność przejdzie do # 2 poniżej w package.json.

# 1. „zależności”: te pakiety są wymagane przez twoją aplikację w środowisku produkcyjnym.

# 2. „devDependencies”: te pakiety są potrzebne tylko do programowania i testowania

Sathesh
źródło
5

Dla mnie pierwsza odpowiedź wydaje się nieco myląca, więc aby była krótka i czysta:

npm install <package_name>domyślnie zapisuje określone pakiety w zależnościach . Dodatkowo możesz kontrolować miejsce i sposób ich zapisywania za pomocą dodatkowych flag:

npm install <package_name> --no-save Zapobiega zapisywaniu w zależnościach.

npm install <package_name> ---save-devaktualizuje devDependenciespakiet. Są one używane tylko do lokalnych testów i rozwoju.

Możesz przeczytać więcej na stronie dcu

AnnaKlein
źródło