Skip to content

feat: создан единый content-manifest #10#16

Closed
rbdnv wants to merge 2 commits into
mainfrom
said-feat-stack
Closed

feat: создан единый content-manifest #10#16
rbdnv wants to merge 2 commits into
mainfrom
said-feat-stack

Conversation

@rbdnv
Copy link
Copy Markdown
Collaborator

@rbdnv rbdnv commented Apr 22, 2026

Что Изменилось

Сделан единый build-time content manifest вместо дублирующего слоя docs/ -> content/.

Теперь docs/ остаётся единственным источником контента, а npm run prepare:content собирает .cache/content-manifest.json с уже подготовленными данными для приложения: slug, title, description, author, order, editPath, toc, preview, topics, hash, body и служебные поля.

Это понадобилось, чтобы убрать повторяющийся парсинг frontmatter, slug и section в разных местах: навигации, поиске и валидаторе. Теперь навигация, поиск и validate-скрипт читают один общий manifest.

Тип Изменения

  • Обновление контента
  • Улучшение UI или UX
  • Изменение поиска или навигации
  • Улучшение build или CI
  • Исправление ошибки
  • Другое

Проверка

Отметьте, что вы запускали:

  • npm run prepare:content
  • npm run validate:content
  • npm run lint
  • npm run typecheck
  • npm run build

Все проверки были нужны, потому что изменение затрагивает build-time генерацию контента, навигацию, поиск, валидацию ссылок и статическую сборку Next.js.

Затронутые Области

  • Треки или файлы:

    • Удалён tracked-каталог content/, так как он больше не нужен как дублирующий слой.
    • docs/ теперь является единственным источником контента.
    • Обновлены README, CONTRIBUTING, issue template и docs/intro.md под новую модель.
  • Маршруты или страницы:

    • /docs
    • /docs/[...slug]
    • /ask
    • sitemap.xml, так как он использует getAllDocs()
  • Скрипты или workflow:

    • Добавлен scripts/content-manifest.mjs
    • Удалён scripts/sync-content.mjs
    • Обновлён scripts/build-search-index.mjs
    • Обновлён scripts/validate-content.mjs
    • Обновлены npm scripts:
      • content:manifest
      • prepare:content
      • content:sync оставлен как compatibility alias
    • Добавлен .cache/ в .gitignore

Скриншоты

Скриншоты не добавлялись, потому что UI визуально не менялся. Изменение касается content pipeline, навигационных данных, поиска и валидации.

Комментарии Для Ревью

Стоит внимательно посмотреть на новый контракт .cache/content-manifest.json: именно он теперь является общей точкой правды для приложения, поиска и валидатора.

Особое внимание:

  • scripts/content-manifest.mjs: корректность ContentRepository -> Parser -> ManifestBuilder
  • обработка docs/intro.md, который мапится в algorithms/getting-started.mdx
  • generated section index pages для разделов без собственного index.mdx
  • сохранение editPath, чтобы ссылка “Редактировать источник” продолжала вести в docs/
  • lib/navigation.ts: теперь не читает файловую систему и не парсит frontmatter
  • scripts/build-search-index.mjs: поиск строится из manifest, но search-specific chunks остаются внутри search builder
  • scripts/validate-content.mjs: проверяет ссылки и якоря по manifest-документам
  • удаление content/: это ожидаемое изменение, так как слой больше не является источником данных

Также npm ci во время проверки показал существующие audit warnings в зависимостях, но они не исправлялись в рамках этой задачи.

@rbdnv rbdnv self-assigned this Apr 22, 2026
Copy link
Copy Markdown
Owner

@minkinad minkinad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Откатываем - задача не актаульна

@minkinad minkinad closed this Apr 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants