Создайте статический сайт один раз и разверните его на нескольких хостах

Я хочу создать свою документацию для размещения в нескольких автономных средах, размещенных в контейнерах докеров. Для этого требуются следующие ключевые функции генератора статических сайтов:

  • Используйте все ресурсы (js/css), размещенные локально со статическими html-файлами.
  • Настройте url и baseUrl во время развертывания (при запуске контейнера Docker).

Эти две конфигурации могут помочь реализовать сборку после развертывания в любом месте и в автономной среде.

Два вопроса,

  • Как установить URL-адрес во время развертывания?
  • Как сделать так, чтобы все ресурсы размещались локально?

🤔 А знаете ли вы, что...
JavaScript поддерживает модульную структуру, что способствует организации кода на больших проектах.


405
2

Ответы:

Вы можете подумать, что вам нужно написать URL-адрес в https://{{ baseUrl }}/a.js и установить baseUrl в параметрах компиляции, на самом деле вам не нужно этого делать.

Просто используйте относительный путь, предположите, что у вас есть тег изображения

  • <img src = "somephoto.jpg" /> означает, что файл находится в том же каталоге, что и текущая страница
  • <img src = "../somephoto.jpg" /> означает, что файл находится в каталоге выше текущей страницы
  • <img src = "/somephoto.jpg" /> означает, что файл находится в корне сайта

Вам нужно будет написать собственный скрипт, который перезапишет в нем siteConfig.js. Поток высокого уровня того, как это произойдет:

  • Запустите скрипт, который заменяет URL-адрес в siteConfig.js на хост 1 (replace1.js)
  • Запустите скрипт развертывания.
  • Запустите скрипт, который заменяет URL-адрес в siteConfig.js на хост 2 (replace2.js)
  • Запустите скрипт развертывания.

В package.json добавьте строку в часть scripts:

"scripts": {
  ...
  "deploy-multiple": "./replace1.js && docusaurus-build && ./replace2.js && docusaurus-build",
  ...
}