Какой опыт работы с npm пакетами
Что проверяют
Понимаете ли вы версионирование и файл блокировки, и публиковали ли что-то сами.
Как отвечать
Разложите на использование и публикацию.
Использование. Главное здесь версионирование:
- семантическая версия из трёх чисел: несовместимое изменение, новая возможность, исправление;
- диапазоны: символ вставки разрешает обновления в пределах старшей версии, тильда только исправления, точная версия фиксирует жёстко;
- файл блокировки фиксирует полное дерево зависимостей с конкретными версиями и контрольными суммами. Он обязан лежать в репозитории, иначе сборка на другой машине притянет другие версии. В конвейере ставят зависимости строго по нему, а не обычной установкой;
- обновление: проверка устаревших, чтение примечаний к выпуску, а не слепое обновление всего.
Проблемы, с которыми сталкивались, называть обязательно: конфликт версий одной библиотеки в разных ветках дерева, из-за чего в сборку попадают две копии; резкий рост размера бандла от одной зависимости; заброшенный пакет без обновлений безопасности; несовместимость между вариантами модулей.
Безопасность: проверка уязвимостей, осторожность со скриптами установки, которые выполняются автоматически, внимание к опечаткам в названиях пакетов.
Публикация, если делали: описание точек входа и экспортов, включение типов, список файлов в поставке, сборка перед публикацией, теги версий, локальная связка пакетов для разработки. Отдельно про монорепозитории с рабочими пространствами, где несколько пакетов живут в одном репозитории.
Если своего пакета не публиковали, скажите честно и опишите, как устроен файл описания и что попадает в поставку. Это показывает понимание не хуже.
Где спотыкаются
Не кладут файл блокировки в репозиторий или удаляют его при конфликте.
Ставят зависимости в конвейере обычной установкой вместо строгой.
Обновляют всё разом без проверки.
Не смотрят, сколько весит зависимость и что она тянет за собой.