Как исправить проблемы с внутренними ссылками при публикации сайта Docusaurus на страницах GitLab

В моем проекте Docusaurus мои внутренние ссылки работают в моей локальной среде, но когда я отправляю в GitLab, они перестают работать. Вместо того, чтобы заменять исходный заголовок документа новым, он добавляет его к URL-адресу в конце («https://username.io/test-site/docs/overview/add-a-category.html»). Я просмотрел свой файл конфигурации, но я не понимаю, почему это происходит.

Я попытался обновить идентификатор в начале страницы и убедиться, что он соответствует идентификатору в файле sidebars.json. Я также добавил customDocsPath и установил для него значение «docs/» в файле конфигурации, хотя предполагается, что это значение по умолчанию.

---
id: "process-designer-overview"
title: "Process Designer Overview"
sidebar_label: "Overview"
---
# Process Designer

The Process Designer is a collaborative business process modeling and 
design workspace for the business processes, scenarios, roles and tasks 
that make up governed data processes.

Use the Process Designer to:

 - [Add a Category](add-a-category.html)
 - [Add a Process or Scenario](Add%20a%20Process%20or%20Scenario.html)
 - [Edit a Process or Scenario](Edit%20a%20Process%20or%20Scenario.html)

Я обновил добавление ссылки на категорию в скобках для расширения md, но это сломало ссылку на моем локальном компьютере, и она по-прежнему не работала в GitLab. Я ожидаю, что когда пользователь нажмет на ссылку, он заменит заголовок документа в URL-адресе новым названием документа («https://username.gitlab.io/docs/add-a-category.html»), но вместо этого он просто прикрепит его к концу («https://username.gitlab.io/docs/process-designer-overview/add-a-category.html»), и поэтому ссылка сломан, так как это не то место, где находится документ.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
581
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Было несколько проблем с моими ссылками. Во-первых, я конвертировал эти файлы из html в markdown с помощью Pandoc и не добавлял вступительную часть, вместо этого полагаясь на имя файла для подключения моих файлов к боковым панелям. Это было нормально, за исключением того, что почти во всех именах файлов были пробелы, что вы можете видеть в моем примере кода выше. Это вызывало настоящие проблемы, поэтому я нашел сценарий Bash, который заменял все пробелы в именах моих файлов символами подчеркивания, но теперь все мои ссылки не работали. Я обновил все ссылки в своих файлах с помощью поиска и замены в редакторе кода, заменив «% 20» на «_». Мне также нужно было заменить расширение «.html» на «.md», иначе мой проект больше не работал бы локально. Опять же, я сделал это с помощью поиска и замены в моем редакторе кода.

Наконец, я закончил тем, что добавил переднюю часть, потому что в противном случае все заголовки моих боковых панелей были покрыты символами подчеркивания. Поскольку я работал с 90 файлами, мне не хотелось делать это вручную. Я поискал какое-то время и нашел отличный смысл от thebearJew и настроил его так, чтобы он брал имя файла и добавлял его как id, а первый заголовок и добавлял его как title и sidebar_label, так как это работает для нашего проекта. Вот скрипт Bash, который я нашел в Интернете, чтобы преобразовать пробелы в именах моих файлов в символы подчеркивания, если интересно:

find $1 -name "* *.md" -type f -print0 | \
  while read -d $'\0' f; do mv -v "$f" "${f// /_}"; done

Вот сценарий, который у меня получился, если у кого-то еще есть аналогичная настройка и он не хочет обновлять огромное количество файлов с вступительной частью:

# Given a file path as an argument
# 1. get the file name
# 2. prepend template string to the top of the source file
# 3. resave original source file

# command: find . -name "*.md" -print0 | xargs -0 -I file ./prepend.sh file

filepath = "$1"
file_name=$("basename" -a "$filepath")

# Getting the file name (title)
md='.md'
title=${file_name%$md}
heading=$(grep -r "^# \b" ~/Documents/docs/$title.md)
heading1=${heading#*\#}

# Prepend front-matter to files
TEMPLATE = "---
id: $title
title: $heading1
sidebar_label: $heading1
---
"
echo "$TEMPLATE" | cat - "$filepath" > temp && mv temp "$filepath"

Другие вопросы по теме