pnpm-lock.yaml в исходных рабочих копиях. Опубликованные npm-пакеты OpenClaw используют npm-shrinkwrap.json — предназначенный для публикации файл блокировки зависимостей npm, поэтому при установке пакетов применяется граф зависимостей, проверенный во время выпуска.
Почему это важно
Shrinkwrap — это ведомость дерева зависимостей, поставляемого с npm-пакетом: он указывает npm, какие именно транзитивные версии следует установить.
Для выпусков OpenClaw это означает:
- опубликованный пакет не заставляет npm создавать новый граф зависимостей во время установки;
- изменения зависимостей можно проверить, поскольку они отражаются в различиях файла блокировки;
- при проверке выпуска тестируется тот же граф, который установят пользователи;
- неожиданные изменения размера пакета или нативных зависимостей обнаруживаются до публикации.
openclaw security audit, проверку происхождения пакета или дымовые тесты установки.
OpenClaw — это Gateway, среда выполнения плагинов, маршрутизатор моделей и среда выполнения агентов, поэтому установка по умолчанию влияет на время запуска, использование диска, загрузку нативных пакетов и подверженность рискам цепочки поставок. Shrinkwrap предоставляет стабильную границу для проверки выпуска: проверяющие видят изменения транзитивных зависимостей, валидаторы отклоняют непредвиденные изменения файла блокировки, а пакеты плагинов содержат собственный зафиксированный граф зависимостей вместо зависимости от корневого пакета.
Создание и проверка
Корневой npm-пакетopenclaw, принадлежащие OpenClaw npm-пакеты плагинов (например, @openclaw/discord) и публикуемые пакеты рабочего пространства, такие как @openclaw/ai, включают npm-shrinkwrap.json при публикации. Зависимости рабочего пространства исключаются из корневого shrinkwrap, поскольку публикуются вместе с корневым пакетом; вместо этого каждый публикуемый пакет рабочего пространства фиксирует собственное дерево транзитивных зависимостей. Подходящие пакеты плагинов также могут публиковаться с явными bundledDependencies, включая файлы зависимостей среды выполнения в tar-архив плагина вместо того, чтобы полагаться только на разрешение зависимостей во время установки.
pnpm-lock.yaml. Это сохраняет установленные pnpm границы по давности зависимостей и проверке переопределений и исправлений.
Рассматривайте следующие элементы как значимые для безопасности:
pnpm-lock.yamlnpm-shrinkwrap.json- содержимое зависимостей встроенных плагинов
- любые различия
package-lock.json
package-lock.json для опубликованных пакетов. Путь публикации npm-пакета плагина проверяет локальный shrinkwrap плагина, устанавливает локально включённые в пакет зависимости, а затем упаковывает или публикует пакет.