В моем проекте 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»), и поэтому ссылка сломан, так как это не то место, где находится документ.
Было несколько проблем с моими ссылками. Во-первых, я конвертировал эти файлы из 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"