~/guides/allowscripts-diff-tracking-releases

JSON

allowScripts diff: как отслеживать изменения allowlist между релизами проекта

Практика отслеживания изменений в allowScripts как элемент security review — что добавили и что удалили между версиями.

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 вместе с обновлением версии.