В чем разница между --save и --save-dev?
в чем разница между:
npm install [package_name] --save
и
npm install [package_name] --save-dev
Что это значит?
9 ответов:
--save-dev
используется для сохранения пакета в целях разработки. Пример: модульные тесты, минимизация..--save
используется для сохранения пакет, необходимый для запуска приложения.
разницу между
--save
и--save-dev
может быть не сразу заметно, если вы пробовали их обоих на своих собственных проектах. Итак, вот несколько примеров...Допустим, вы строили приложение, которое использовало момент пакет для разбора и отображения дат. Ваше приложение является планировщиком, поэтому ему действительно нужен этот пакет для запуска, как в: не может работать без него. В этом случае вы должны использовать
npm install moment --save
это создайте новое значение в пакете.json
"dependencies": { ... "moment": "^2.17.1" }
когда вы разрабатываете, это действительно помогает использовать такие инструменты, как наборы тестов и, возможно, потребуется Жасмин-основной и карма. В этом случае вы должны использовать
npm install jasmine-core --save-dev npm install karma --save-dev
это также создаст новое значение в вашем пакете.json
"devDependencies": { ... "jasmine-core": "^2.5.2", "karma": "^1.4.1", }
ты не нужно набор тестов для запуска приложения в нормальном состоянии, так что это
--save-dev
тип зависимости, не более того. Вы можете видеть как если вы не понимаете, что происходит на самом деле, это немного трудно представить.взяты непосредственно из npm docs docs#dependencies
зависимости
зависимости задаются в простом объекте, который сопоставляет имя пакета к диапазону версий. Диапазон версий-это строка, которая имеет один или больше разделенных пробелом дескрипторов. Зависимости также могут быть определены с тарболом или git URL.
пожалуйста, не ставьте тестовые жгуты или транспилеры в зависимости объект. См. В разделе devDependencies ниже.
даже в документах он просит вас использовать --save-dev для модулей, таких как тестовые жгуты.
Я надеюсь, что это помогает и ясно.
по умолчанию NPM просто устанавливает пакет под node_modules. Когда вы пытаетесь установить зависимости для вашего приложения/модуля, вам нужно будет сначала установить их, а затем добавить их в вашего
package.json
.
--save-dev
добавляет сторонний пакет к зависимостям разработки пакета. Он не будет установлен, когда кто-то установит ваш пакет. Он обычно устанавливается только если кто-то клоны ваш исходный репозиторий и работаетnpm install
в нем.
--save
добавляет сторонний пакет к зависимостям пакета. Он будет установлен вместе с пакетом всякий раз, когда кто-то запускаетnpm install package
.зависимости Dev - это те зависимости, которые необходимы только для разработки пакета. Что может включать в себя тестовые бегунов, компиляторы, упаковщики и т. д. Оба типа зависимостей хранятся в пакете .
--save
добавляетdependencies
,--save-dev
добавляетdevDependencies
npm install документация может быть упомянут здесь.
как предложил @andreas-hultgren in ответ и по npm docs:
Если кто-то планирует загрузить и использовать ваш модуль в своей программе, то им, вероятно, не нужно или не нужно загружать и создавать внешнюю среду тестирования или документации, которую вы используете.
однако, для разработки веб-приложений,старшина (инструмент строительных лесов, который устанавливает рецензируемый, предварительно написанный пакет.файл json среди прочего) помещает все пакеты в devDependencies и ничего в зависимости, поэтому кажется, что использование
--save-dev
это безопасная ставка в webapp развитие, по крайней мере.
прекрасным примером этого является:
$ npm install typescript --save-dev
в этом случае вы хотели бы иметь Typescript (язык кодирования с возможностью синтаксического анализа javascript), доступный для разработки, но после развертывания приложения это больше не нужно, так как весь код был перенесен на javascript. Таким образом, не имеет смысла включать его в опубликованное приложение. Действительно, это займет только место и увеличит время загрузки.
--save-dev
сохраняет спецификацию semver в массив "devDependencies" в файле дескриптора пакета,--save
сохраняет его в "зависимости" вместо.
-- save-dev используется для модулей, используемых в разработке приложения, не требуется при запуске его в производственной среде -- save используется для добавления его в пакет.json и требуется для запуска приложения.
пример: выразить,тело-парсер,лодашь,шлем,MySQL и все они используются во время выполнения приложения использовать-сохранить, чтобы положить в зависимости, в то время как мокко,Стамбул,чай,sonarqube-сканер всего используются во время разработки ,так что положить эти в dev-зависимости .
npm link или npm install также установят модули dev-dependency вместе с модулями зависимостей в папке проекта
четкие ответы уже предусмотрены. Но стоит упомянуть, как
devDependencies
влияет на установку пакетов:по умолчанию npm install установит все модули, перечисленные в качестве зависимостей в пакете.формат JSON. С флагом --production (или когда переменная среды NODE_ENV имеет значение production) npm не будет устанавливать модули, перечисленные в devDependencies .
обычно вы не хотите раздувать производственный пакет с вещами, которые вы собираетесь использовать только для целей разработки. Поэтому используйте опцию --save-dev (или-D) для разделения таких пакетов, как watchers(nodemon), unit test Framework(jest, jasmine, mocha, chai и т. д.так далее.)
любые другие библиотечные пакеты, необходимые для работы вашего приложения, должны быть установлены с помощью --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
Если вы открываете пакет.JSON-файл, то вы увидите эти записи перечислены в двух разных разделах:
"dependencies": { "lodash": "4.x", "moment": "2.x", "opentracing": "^0.14.1" }, "devDependencies": { "jest": "22.x", "typescript": "^2.8.3" },