Что настраивается в файле package.json
Что проверяют
Выходили ли вы за пределы написания компонентов. По ответу видно, кто настраивал сборку и разбирался с конфликтами версий, а кто только запускал npm run dev и не открывал этот файл вовсе.
Как отвечать
Разложите по группам, а не перечисляйте поля подряд.
- Описание пакета:
name,version,description,license, а у приложения обязательноprivate: true, чтобы случайная публикация просто не состоялась. - Зависимости:
dependenciesнужны в работающем коде,devDependenciesтолько при сборке и тестах,peerDependenciesобъявляют, с какой версией хоста совместима библиотека,optionalDependenciesтерпят отсутствие,overridesпринудительно поднимают версию транзитивного пакета. - Диапазоны версий:
^1.2.3пускает минорные обновления,~1.2.3только патчи, точная запись фиксирует. Настоящую воспроизводимость даёт не диапазон, а лок-файл, иnpm ciставит строго по нему. - Скрипты: команды в
scripts, автоматические обёрткиpreиpost, доступ к локальным бинарникам без глобальной установки. - Точки входа и формат модулей:
type, картаexports, устаревающийmain,types, а такжеfilesиbinдля того, что уедет в опубликованный пакет. - Окружение и инструменты:
engines,packageManager,workspacesдля монорепозитория,browserslist,sideEffectsдля отсечения мёртвого кода, секции настроек отдельных инструментов.
Где спотыкаются
Кладут всё подряд в dependencies, потому что так тоже собирается. В приложении разница почти не видна, зато у библиотеки каждый потребитель получает ваши сборочные пакеты, а установка без dev-зависимостей перестаёт что-либо экономить.
Второе: уверенно заявляют, что peer-зависимости не устанавливаются автоматически. Современный npm их ставит сам и падает на конфликте версий, поэтому в проектах и встречается флаг отключения этой проверки, которым конфликт заглушают вместо разбора.
Третье: правят версию в файле руками, не трогая лок-файл. Локально всё работает на старом содержимом node_modules, а сборка ставит по локу и получает другой набор пакетов. Версию меняют командой установки, лок-файл коммитят вместе с ней.