Дрейф npm peer-зависимостей OpenClaw и чистая пересборка на облачном Mac 2026: остановить ERESOLVE на шлюзах Apple Silicon MacLogin
Если npm install на мини MacLogin краснеет после мелкого бампа плагина, npm редко сломана. Почти всегда это дрейф peer: опциональные peer, дубли мажоров, hoist, расходящийся с документированной базой Node 22. Этот гайд апреля 2026 ведёт через снимок, удаление, npm ci, doctor, launchd в HK/JP/KR/SG/US без снежинок на хосте. Матрица симптомов, дисковая математика, FAQ для читателей рунбука doctor.
install.sh против npm -g, безголовый онбординг, цены, справка, VNC, хаб OpenClaw, бэкап состояния, катовер.
Почему peer болит на общих мини
Арендованные мини копят 3–7 параллельных экспериментов в ~/.npm. Незавершённый npm link ломает hoisting.
- Чужой
--legacy-peer-depsотравляет следующий install. - Офлайн-зеркало отстаёт на 24–72 часа.
- LaunchAgents перезапускаются до сброса логов.
node_modules перед npm ci.Матрица симптомов
| Симптом | Корень | Митигация | Проверка |
|---|---|---|---|
| ERESOLVE при старте | Конфликт мажоров плагинов | Закрепить родителя | npm explain |
| Тихий exit 1 | Нет опционального peer | npm ci с dev | openclaw doctor |
| Петли hot reload | Частичная установка | rm -rf node_modules | diskutil + df |
7 шагов чистой пересборки
- Снимок ~/.openclaw.
- Остановить LaunchAgent 15 с.
- Удалить деревья по политике.
npm cache verify.npm ciс нужным optional.openclaw doctor --json.- Перезапуск launchd и 5 curl health.
pnpm и npm в одном префиксе.Политика lockfile и паритет CI
Коммитьте package-lock.json в ту же ветку, что и шлюз. CI по возможности запускает npm ci на macOS runner; только Linux пропускает optional, которые macOS разрешает иначе — около 12% апрельских тикетов MacLogin 2026.
Добавьте барьер слияния: для профиля шлюза npm ls --all --omit=dev с ненулевым кодом выхода — провал, даже если dev-установки выглядели зелёными. Плюс еженедельная задача на самом арендованном мини с тем же командным рядом, чтобы поймать дрейф между образом CI и разметкой APFS до того, как launchd перезапустит сервис.
overrides, bundledDependencies и дисциплина engines
Когда peer-конфликт, тянутся к флагам. На хостах MacLogin предпочитайте декларативные правки, переживающие передачу: overrides в package.json (владелец и срок в тикете), bundledDependencies для крошечных вендорских шимов, которые нужно отгрузить дословно, и диапазоны engines.npm / engines.node под базовую линию Node 22 из ваших runbook.
- Аудит overrides: каждый override называет CVE, регресс или upstream-задачу; пустые overrides ради зелёного убираются на следующей зачистке.
- Bundled-зависимости: только пакеты, которые можно легально редистрибутить и чью целостность вы зафиксировали в тикете.
- Приватные registry: если зеркала Verdaccio или Artifactory перестраивают метаданные, зафиксируйте версию зеркала и приложите вывод
npm viewк bump lockfile. - Монорепо и workspace: у шлюзов объявите границы
npx --no-install, чтобы случайныйnpm linkиз соседних пакетов не переписал peer-граф в рантайме.
engine-strict=true в проектном .npmrc префикса шлюза, когда все подтвердили одинаковый минор Node; расхождение миноров — скрытая причина peer ок в CI и не ок на мини.Поля шаблона передачи
В заявке на изменение укажите: хеш lockfile до/после, выдержки npm explain по каждому конфликтующему пакету, diff JSON doctor и путь plist LaunchAgent, который перезапускали. Security по этим полям отделяет временный долг от сдвига политики.
Дисковый бюджет node_modules
Еженедельно du -sh ~/.openclaw/**/node_modules. Сумма свыше 9 ГБ — плановая пересборка; чистка _cacache с TTL 7 дней.
Ворота doctor до launchd
JSON doctor — артефакт релиза. Более 2 новых предупреждений без владельца — отклонять. См. катовер.
FAQ
--force? Только одноразовые клоны.
HK и US Node? Одинаковый LTS-минор из справки.
MacLogin удалит node_modules? Аварийный сброс да; рутина в вашем runbook.
Когда npm overrides безопаснее, чем --legacy-peer-deps? overrides проходят ревью, версионируются и видны в git blame. legacy-флаги прячутся в истории shell и пропадают, когда следующий инженер запускает простой npm install — на общих арендованных мини их запрещают, кроме одноразовых каталогов.
Mac mini M4
Быстрый npm, unified memory для TS при переустановке. Мультирегион снижает искажение tarball. Диск — цены.
Пересборка OpenClaw на узле под npm-граф
Установки с воротами doctor на MacLogin Apple Silicon HK/JP/KR/SG/US.