npm: зависимости против devDependencies со связанными зависимостями

Используя поиск, я уже нашел несколько отличных ответов на подобные вопросы, но все же я не уверен, правильно ли я понял.

Из этих ответов я узнал, что dependencies необходимо запустить приложение, пока devDependencies требуются только при разработке (например, юнит-тесты).

Но как насчет этого: мое приложение зависит от jQuery, но на этапе сборки (с помощью моего devDependencies) все упаковано в один файл. В этом случае я должен перечислить JQuery как dependency или как devDependency?

Чтобы сделать мою точку зрения более понятной, возьмите такой модуль:

define(['jquery'], function($) {
  // use jQuery in this module
})

Позже этот модуль будет скомпилирован в нечто вроде application.build.js который затем содержит этот модуль и зависимость jQuery.

1 ответ

Поскольку конечный результат один и тот же, здесь, похоже, нет определенного правила, но я нашел пару дискуссий по этому вопросу:

Если вы создаете приложение

https://github.com/webpack/webpack/issues/520

Браузерное приложение, созданное с помощью [insert build tool / bundler], не имеет зависимостей узла времени выполнения, и поэтому все зависимости внешнего интерфейса должны быть перечислены как devDependencies. dependencies против devDependencies Соглашение об именах исторически проистекает из того, что узел является диспетчером пакетов на стороне сервера (...) Насколько я могу сказать, безвредно перечислять зависимости внешнего интерфейса в разделе dependencies, но это неправильно.

(...) в качестве общей рекомендации для всех, переместите все в devDependencies пока это на самом деле не нужно под dependencies,

Если вы строите библиотеку:

https://github.com/inuitcss/inuitcss/issues/225

Во многих веб-проектах весь код, передаваемый в браузер, компилируется, нет никаких зависимостей времени выполнения. Это будет означать, что нет dependencies, только devDependencies - все зависимости включены в сборку, выполненную во время разработки.

Можно также утверждать, что зависимости необходимы и для разработки, поэтому было бы хорошо перечислить все dependencies,

Я думаю, что тот факт, что у нас есть факультативное различие, указывает на разумный способ их использования. Это имеет смысл (для меня), что dependencies Обозначение будет представлять "минимально жизнеспособный" код для использования и в качестве индикатора того, что не обязательно для того, чтобы что-то работало.

На мой взгляд, все, что становится частью производственного кода, является dependency,

эпилог

Лично я больше согласен с последней цитатой. Это имеет смысл, что dependencies говорит нам, что код приложения должен работать, и devDependencies что разработчик должен собрать / развернуть / независимо от приложения / библиотеки.

Одно предостережение заключается в том, что если кто-то npm installЕсли ваша библиотека будет использовать пакет в качестве модуля в своем приложении, они будут загружать много dependencies они на самом деле не нужны.

Другие вопросы по тегам