nuckty
EN
Все разделы →

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 к этому моменту уже мог изменить рабочую копию.

Что делает

  1. Читает config/external.json — массив адресов git.
  2. Клонирует репозиторий в external/<repo>/; существующую копию обновляет только при совпадении источника и чистом рабочем дереве. Чужие, изменённые или непроверяемые копии и символические ссылки отклоняются.
  3. После подготовки укажите клон первым уровнем в 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'],
});