Jaka jest różnica między -- save I -- save-dev?
Jaka jest różnica między:
Npm install [nazwa_pakietu] --save
I
Npm install [nazwa_pakietu] --save-dev
Co to znaczy?
9 answers
-
--save-dev
jest używany do zapisania pakietu do celów programistycznych. Przykład: testy jednostkowe, minifikacja.. -
--save
służy do zapisywania pakiet wymagany do uruchomienia aplikacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-11 15:56:48
Różnica między --save
i --save-dev
może nie być natychmiast zauważalna, jeśli wypróbowałeś je oba na własnych projektach. Oto kilka przykładów...
Powiedzmy, że budowałeś aplikację, która używała moment pakiet do analizy i wyświetlania dat. Twoja aplikacja jest schedulerem, więc naprawdę potrzebuje tego pakietu, aby uruchomić, jak w: nie można uruchomić bez niego . W tym przypadku należy użyć
npm install moment --save
To stworzy nową wartość w Twoim paczka.json
"dependencies": {
...
"moment": "^2.17.1"
}
Kiedy rozwijasz, naprawdę pomaga korzystanie z narzędzi, takich jak zestawy testowe i może potrzebować jasmine-core i karma . W tym przypadku należy użyć
npm install jasmine-core --save-dev
npm install karma --save-dev
Spowoduje to również utworzenie nowej wartości w pakiecie.json
"devDependencies": {
...
"jasmine-core": "^2.5.2",
"karma": "^1.4.1",
}
Robisz nie potrzebujesz zestawu testów, aby uruchomić aplikację w normalnym stanie, więc jest to zależność typu --save-dev
, nic więcej. Możesz zobaczyć, jak jeśli nie rozumiesz, co naprawdę się dzieje, to jest trochę trudne do wyobraź sobie.
Pobrane bezpośrednio z NPM docs docs#dependencies
Zależności
Zależności są określone w prostym obiekcie, który mapuje nazwę pakietu do zakresu wersji. Zakres wersji jest ciągiem, który ma jeden lub więcej deskryptorów rozdzielonych spacjami. Można również określić zależności z adresem URL tarball lub GIT.
Proszę nie umieszczać wiązek testowych lub transpilerów w zależności obiekt. Zobacz też devDependencies, poniżej.
Nawet w dokumentach, prosi o użycie --save-dev dla modułów takich jak wiązki testowe.
Mam nadzieję, że to pomoże i jest jasne.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-02 21:25:15
Domyślnie NPM po prostu instaluje pakiet pod node_modules. Gdy próbujesz zainstalować zależności dla aplikacji / modułu, najpierw musisz je zainstalować, a następnie dodać je do sekcji dependencies
swojego package.json
.
--save-dev
dodaje pakiet innej firmy do zależności deweloperskich pakietu. Nie zostanie on zainstalowany, gdy ktoś zainstaluje Twój Pakiet. Zazwyczaj jest instalowany tylko wtedy, gdy ktoś klonuje twoje repozytorium źródłowe i uruchamia w nim npm install
.
--save
dodaje pakiet innej firmy do zależności pakietu. Zostanie on zainstalowany razem z pakietem, gdy ktoś uruchomi npm install package
.
Dev dependencies są zależnościami, które są potrzebne tylko do rozwoju pakietu. Mogą to być biegacze testowe, Kompilatory, packagery itp.
Oba typy zależności są przechowywane w pliku package.json
pakietu. --save
dodaje do dependencies
, --save-dev
dodaje do devDependencies
Dokumentacja Npm install może być tutaj.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-15 11:17:09
Zgodnie z sugestią @andreas-hultgren w Ta odpowiedź i zgodnie z npm docs :
Jeśli ktoś planuje pobrać i używać twojego modułu w swoim programie, to prawdopodobnie nie chce lub nie musi pobierać i budować zewnętrznego frameworka testowego lub dokumentacji, którego używasz.
Jednak dla rozwoju webapp, Yeoman (Narzędzie rusztowania, które instaluje peer-reviewed, wstępnie napisany pakiet.plik json między innymi) umieszcza wszystkie pakiety w devDependencies i nic w dependencies, więc wygląda na to, że użycie --save-dev
jest bezpiecznym rozwiązaniem w webapp development, przynajmniej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:28
Doskonałym tego przykładem jest:
$ npm install typescript --save-dev
W tym przypadku, chcesz mieć Typescript (język kodowania javascript-parseable) dostępny do rozwoju, ale po wdrożeniu aplikacji, nie jest już konieczne, ponieważ cały kod został przeniesiony do javascript. W związku z tym nie ma sensu umieszczać go w opublikowanej aplikacji. Rzeczywiście, zajmie to tylko miejsce i zwiększy czas pobierania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-30 16:13:11
--save-dev
zapisuje specyfikację semver do tablicy "devDependencies" w pliku deskryptora pakietu, --save
zapisuje ją do "dependencies".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-06 08:07:21
--save-dev jest używany dla modułów używanych w rozwoju aplikacji, nie wymaga podczas jej uruchamiania w środowisku produkcyjnym --save jest używany do dodania go do pakietu.json i jest on wymagany do uruchomienia aplikacji.
Przykład: express,body-parser,lodash,helmet, mysql wszystkie te są używane podczas uruchamiania aplikacji use --save to put in dependencies podczas gdy mocha,istanbul,chai, sonarqube-scanner wszystkie są używane podczas programowania, więc umieścić je w Dev-dependencies .
Npm link lub npm install zainstaluje również moduły dev-dependency wraz z modułami zależności w folderze projektu
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-28 08:30:12
Jasne odpowiedzi już są. Warto jednak wspomnieć, jak devDependencies
wpływa na instalowanie pakietów:
Domyślnie npm install zainstaluje wszystkie moduły wymienione jako zależności w pakiecie.json . Z flagą --production (lub gdy zmienna środowiskowa NODE_ENV jest ustawiona na production ), npm nie zainstaluje modułów wymienionych w devDependencies .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-13 03:25:58
Zazwyczaj nie chcesz nadmuchać pakietu produkcyjnego rzeczami, które zamierzasz wykorzystać tylko w celach rozwojowych. Więc użyj opcji --save-dev (lub-D), aby oddzielić te pakiety, takie jak watchery(nodemon), frameworki testów jednostkowych(jest, jasmine, mocha, chai itp.itd.)
Wszelkie inne pakiety biblioteczne, które muszą działać, muszą być zainstalowane za pomocą --save (or-S)
npm install --save lodash //prod dependency
npm install -S moment // " "
npm install -S opentracing // " "
npm install -D jest //dev only dependency
npm install --save-dev typescript //dev only dependency
Jeśli otworzysz opakowanie.pliku json, wtedy zobaczysz te wpisy wymienione pod dwoma różne sekcje:
"dependencies": {
"lodash": "4.x",
"moment": "2.x",
"opentracing": "^0.14.1"
},
"devDependencies": {
"jest": "22.x",
"typescript": "^2.8.3"
},
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-22 19:38:47