mQm
@mQm
https://medium.com/@gearmobile

В чем разница между --save-dev и --save?

Доброго времени суток!

Ставил тут у себя пакеты под Gulp, хотел разобраться с работой плагина gulp.spritesmith. И случайно в командной строке для установки пакета gulp-jade набрал ключ --save вместо --save-dev.

А когда заглянул в package.json чтобы проверить, что все установилось нормально, то увидел такую картину:

...
  "devDependencies": {
    "gulp": "^3.8.10",
    "gulp-stylus": "^1.3.4",
    "gulp.spritesmith": "^2.4.0"
  },
  "dependencies": {
    "gulp-jade": "^0.10.0"
  }


Из чего видно, что пакеты gulp, gulp-stylus и gulp.spritesmith устанавливались с ключом --save-dev (надпись devDependencies), а пакет gulp-jade устанавливался с ключом --save (надпись dependencies).

Долгое вступление, а теперь вопрос - а в чем разница между ключами --save-dev и --save? Меня больше всего интересует практическая сторона вопроса, ибо Gulp'ом пользуюсь, но разрабатывать плагины под него не буду )
  • Вопрос задан
  • 58642 просмотра
Решения вопроса 1
keksmen
@keksmen
Just a programmer
Как верно подметил ruddy22 в production версию продукта попадают не все модули, использующиеся при разработке. К примеру, если вы хотите минифицировать модуль, то, скорее всего будете использовать уже готовые продукты, которые в его использовании не пригодятся.

Если совсем коротко, то модули из devDependencies не будут установлены в production. Вот и всё.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
k12th
@k12th
console.log(`You're pulling my leg, right?`);
devDependencies — пакеты, которые нужны для разработки. Всякие галпы-гранты и плагины к ним обычно подпадают в эту категорию.
dependencies — пакеты, от которых ваш пакет зависит непосредственно: как правило — библиотеки.
Ставятся они все в node_modules.
Тут подробнее: https://toster.ru/answer?answer_id=559717#comments...

Если кто-то делает npm install вашему пакету, то npm подсосет те пакеты, которые указаны у него в dependencies, но не в devDependencies.
Если сделать npm install внутри папки, в которой есть package.json, то установятся и те, и другие.
Ответ написан
ruddy22
@ruddy22
Спасение утопающих — дело рук самих утопающих
это нужно для деплоя в продакшн.
а в продакшн, как известно попадает уже минифицированная версия всего.
если я не прав, поправьте меня.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы