Как правильно разбивать зависимости npm пакета?

Суть такова:
Есть некий функциональный модуль, который поставляется в конечное приложение при помощи npm, как отдельный пакет в node_modules. Как и у любого современного js приложения, у него есть ряд зависимостей, часть из которых нужны только для сборки, а другая часть используется в самом пакете при сборке. Первые, соответственно, devDependencies, а вторые - dependencies. При этом, сам пакет поставляется в уже собранном виде, то есть, по сути, одним файлом-бандлом с возможностью импорта из него. Однако, при установке пакета, он тянет с собой и свои dependencies, которые не нужны конечному приложению, так как в нём не используются, но такова механика npm и в интернетах пишут, что такие зависимости должны быть именно в save разделе. Вопрос: Насколько хорошая идея будет перенести такого рода зависимости в devDependencies, если они нужны только этому пакету? Плюс ещё есть размышления в сторону дублирования кода, например, если есть ещё пакет, который использует такие же зависимости и они у него тоже в бандле. Посему ещё вопрос: Может есть какие-то секреты сборки npm пакетов таким образом, чтобы их зависимости не попадали в бандл и, в случае если какой-то другой пакет использует такие же, не возникало дублирования? Как я понял, peerDependencies - это немного про другое. Может кто-то пояснить за зависимости и за их правильное использование именно при создании npm пакета?
  • Вопрос задан
  • 218 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Хорошей практикой является не тащить зависимости в бандл.
В webpack есть externals
В rollup есть external
Если Вы вшиваете свои зависимости в бандл своего пакета - Вы без вариантов создаете дублирование кода в бандле, если мне нужны те же зависимости, что и Вашему пакету и дополнительно Ваш пакет
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 12:53
1000 руб./за проект
19 апр. 2024, в 12:41
8000 руб./за проект
19 апр. 2024, в 12:05
1500 руб./в час