allowScripts — это по сути список доверенных зависимостей с install-скриптами. Любой список доверия стоит периодически пересматривать, а не относиться к нему как к статичному файлу, который написали один раз и забыли.
Почему изменения в allowScripts заслуживают отдельного внимания при ревью
{
"allowScripts": {
"sharp@0.33.5": true,
"unknown-native-pkg@1.0.2": true
}
}
Pull Request, добавляющий новую запись в allowScripts, фактически расширяет список кода, которому проект доверяет выполнение произвольных скриптов при установке. Это заслуживает такого же внимания при код ревью, как изменение зависимостей package.json, а не молчаливого одобрения вместе с остальным diff.
Проблема обычного текстового git diff для этой задачи
Построчный diff в git показывает изменение всего JSON-блока при простом переформатировании или изменении порядка ключей, даже если реальных изменений в списке доверенных пакетов не было. Смысловое сравнение по значениям пар пакет-версия даёт куда более точную картину.
| Сценарий | Что покажет git diff | Что важно на самом деле |
|---|---|---|
| Добавлена одна новая запись | Одна добавленная строка | Одна новая зависимость получила доверие |
| Переформатирован весь блок | Весь блок как изменённый | Реальных изменений в списке нет |
| Обновлена версия существующего пакета | Одна изменённая строка | Старая версия убрана, новая добавлена — семантически два действия |
Практика для команд с частыми обновлениями зависимостей
Периодическая сверка allowScripts особенно важна для проектов с автоматическим обновлением зависимостей через боты вроде Dependabot или Renovate — такие боты могут молча добавлять новые записи в allowlist вместе с обновлением версии, и это стоит явно замечать, а не пропускать в потоке рутинных PR.
Как получить точное сравнение вместо ручного вычитывания
allowScripts Diff Tracker сравнивает две версии по смыслу и явно показывает добавленные и удалённые записи.
Итоговый чеклист
Изменение в allowScripts расширяет или сужает список доверенного кода — это заслуживает отдельного внимания при код ревью, а не автоматического одобрения.
Смысловое сравнение по значениям пар пакет-версия точнее обычного текстового diff, который может показать ложные изменения из-за форматирования.
Особое внимание стоит уделять PR от ботов автообновления зависимостей — они могут молча расширять allowlist вместе с обновлением версии.