Как исправить проблемы с внутренними ссылками при публикации сайта 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'), и поэтому ссылка не работает, поскольку это не то место, где документ расположен.
1 ответ
Было несколько проблем с моими ссылками. Во-первых, я конвертировал эти файлы из html в уценку с помощью Pandoc и не добавлял ничего, вместо этого полагаясь на имя файла, чтобы подключить мои файлы к боковым панелям. Это было хорошо, за исключением того, что почти во всех именах файлов были пробелы, что вы можете увидеть в моем примере кода выше. Это вызывало реальные проблемы, поэтому я нашел скрипт Bash, который заменил все пробелы в именах моих файлов подчеркиванием, но теперь все мои ссылки были разорваны. Я обновил все ссылки в моих файлах с помощью поиска и заменил в редакторе кода, заменив "%20" на "_". Мне также нужно было заменить расширение ".html" на ".md", иначе мой проект больше не будет работать локально. Опять же, я сделал это с помощью поиска и замены в моем редакторе кода.
Наконец, я закончил тем, что добавил начальную тему, потому что в противном случае заголовки моих боковых панелей были подчеркнуты. Поскольку я работал с 90 файлами, я не хотел делать это вручную. Некоторое время я искал и нашел отличную суть thebearJew и настроил его так, чтобы он брал имя файла и добавлял его в качестве идентификатора, а также первый заголовок и добавлял его в качестве заголовка и 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"