nuckty-ext-command-content-external
Наполнение корня контента из внешних репозиториев Git. Команда nuckty content-external читает external.json, клонирует перечисленные репозитории и обновляет рабочие копии. Это отдельный шаг перед сборкой, а не часть её.
Тип
command — добавляет команду content-external через env.commands.
Для работы требуется git в PATH. Для обновлений также нужен Git LFS: после git pull команда всегда запускает git lfs ls-files, а при непустом списке — git lfs pull. Ошибка проверки или загрузки завершает обновление с ошибкой; предшествующий git pull к этому моменту уже мог изменить рабочую копию.
Что делает
- Читает
config/external.json— массив адресов git. - Клонирует репозиторий в
external/<repo>/; существующую копию обновляет только при совпадении источника и чистом рабочем дереве. Чужие, изменённые или непроверяемые копии и символические ссылки отклоняются. - После подготовки укажите клон первым уровнем в levels.json, и
nuckty buildчитает контент с диска.
Команда читает только общий config/external.json, а не файл из configDir таргета, и не принимает имя таргета. Отсутствующий файл или массив [] означает, что подготавливать нечего. Для отдельных конфигураций согласуйте их списки с общим файлом; см. внешние репозитории.
Опции
nuckty content-external [--dry-run]
| Опция | Действие |
|---|---|
--dry-run | Показать, какие репозитории были бы клонированы, обновлены или отклонены, без записи на диск. |
Почему отдельная команда, а не часть сборки
Клонирование и обновление требуют доступа к сети и установленного git. Если делать это на каждой сборке, nuckty build перестанет быть детерминированным и офлайновым, а результат начнёт зависеть от состояния удалённых репозиториев.
Подготовка выполняется явно из корня настроенного сайта. --dry-run делает локальные проверки Git, но не обращается к сети и не пишет файлы. Сборка сама не запускает clone/fetch. Для работы без сети нужны готовые входные данные и расширения, не обращающиеся к сети; воспроизводимость также требует фиксированных версий и метаданных. Git может использоваться ядром для времени изменения исходников; без него время равно null.
Установка
Пример продолжает быстрый старт со стандартным обработчиком nuckty-ext-block-root. Добавьте новое расширение в ext глобального config/config-nuckty.ts, сохранив остальные записи. Если обработчик документа собственный, оставьте его вместо nuckty-ext-block-root.
Установите подготовленный пакет из каталога packages/ распакованного стартового проекта:
npm install --save-dev ./packages/nuckty-ext-command-content-external-1.0.0-beta1.tgz
import { defineNucktyConfig } from 'nuckty';
export default defineNucktyConfig({
targets: { main: { configDir: 'config/', outDir: 'site/' } },
ext: ['nuckty-ext-block-root', 'nuckty-ext-command-content-external'],
});