Deployment статических сайтов

В разработке с использованием фреймворка Solid.js часто требуется развертывание статических сайтов. Эти сайты могут быть развернуты на различных хостингах, таких как GitHub Pages, Vercel, Netlify и других. В этом разделе рассмотрены способы развертывания статического сайта, созданного с помощью Solid.js, на различных платформах.

Основы создания статического сайта в Solid.js

Solid.js предоставляет удобные инструменты для разработки интерактивных пользовательских интерфейсов, но для развертывания статического сайта нужно учесть несколько важных аспектов.

1. Сборка проекта

Перед тем как начать развертывание, нужно подготовить проект. Основной командой для сборки проекта в Solid.js является:

npm run build

Эта команда создает оптимизированную версию сайта, готовую для развертывания. По умолчанию файлы собираются в директорию dist/, где размещаются все статические файлы, включая HTML, CSS и JavaScript.

2. Использование маршрутизации

В Solid.js маршрутизация осуществляется через компоненты, но при сборке статического сайта необходимо удостовериться, что все маршруты обрабатываются правильно. Для этого может быть использована библиотека для маршрутизации, например, solid-app-router. В случае статических сайтов важно, чтобы маршруты обрабатывались непосредственно на клиентской стороне, иначе возникнут ошибки 404.

Развертывание на GitHub Pages

GitHub Pages — это один из самых популярных и бесплатных хостингов для статических сайтов. Чтобы развернуть сайт на GitHub Pages, нужно выполнить несколько шагов:

  1. Настройка репозитория

    Для начала создается новый репозиторий на GitHub. Этот репозиторий будет содержать исходный код проекта.

  2. Добавление настройки в package.json

    В файле package.json нужно добавить поле homepage, которое указывает на URL, по которому будет доступен сайт. Для сайта на GitHub Pages это будет ссылка вида:

    "homepage": "https://username.github.io/repository-name"
  3. Сборка проекта

    Для сборки проекта используйте команду:

    npm run build

    Сайт будет собран в папку dist/.

  4. Публикация через GitHub Actions

    Для автоматической публикации можно использовать GitHub Actions. В корне проекта создается файл конфигурации .github/workflows/deploy.yml:

    name: Deploy Static Site
    
    on:
      push:
        branches:
          - main
    
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout code
            uses: actions/checkout@v2
    
          - name: Set up Node.js
            uses: actions/setup-node@v2
            with:
              node-version: '14'
    
          - name: Install dependencies
            run: npm install
    
          - name: Build the site
            run: npm run build
    
          - name: Deploy to GitHub Pages
            uses: peaceiris/actions-gh-pages@v3
            with:
              github_token: ${{ secrets.GITHUB_TOKEN }}
              publish_dir: ./dist

    Этот скрипт автоматически развертывает проект на GitHub Pages после каждого пуша в ветку main.

  5. Публикация вручную

    Если требуется развернуть сайт вручную, можно выполнить следующие шаги:

    • Перейдите в директорию dist/:

      cd dist
    • Инициализируйте репозиторий Git:

      git init
    • Свяжите его с репозиторием на GitHub:

      git remote add origin https://github.com/username/repository-name.git
    • Добавьте все файлы и сделайте коммит:

      git add .
      git commit -m "Deploy static site"
    • Разверните на GitHub Pages:

      git push -u origin master:gh-pages

Развертывание на Vercel

Vercel — это облачная платформа для развертывания фронтенд-приложений. Она поддерживает Solid.js и автоматизирует процесс развертывания.

  1. Подготовка репозитория

    Важно, чтобы проект был размещен в репозитории GitHub, GitLab или Bitbucket.

  2. Создание проекта на Vercel

    Перейдите на сайт Vercel, авторизуйтесь и подключите свой репозиторий. Платформа автоматически определяет, что это проект на Node.js и предлагает настроить команду сборки:

    npm run build
  3. Настройка окружения

    При необходимости настройте переменные окружения, такие как API-ключи, в панели управления Vercel. Все настройки могут быть выполнены через веб-интерфейс, и они будут автоматически применены при развертывании.

  4. Автоматическое развертывание

    После того как проект будет подключен, Vercel настроит автоматическое развертывание при каждом обновлении репозитория. Каждый коммит на ветке main будет автоматически развернут.

  5. Просмотр сайта

    После успешного развертывания Vercel предоставит URL, по которому будет доступен сайт.

Развертывание на Netlify

Netlify — еще одна популярная платформа для развертывания статических сайтов. Она также поддерживает Solid.js и предоставляет удобный интерфейс для автоматической сборки и развертывания.

  1. Подключение репозитория

    Для начала необходимо создать проект на Netlify и подключить репозиторий. Процесс подключения будет похож на тот, что используется в Vercel.

  2. Настройка сборки

    В настройках Netlify укажите команду для сборки проекта:

    npm run build

    Укажите папку, в которую будет собираться проект (по умолчанию это dist/).

  3. Настройка деплоя

    Netlify автоматически настроит развертывание при каждом изменении в репозитории. Платформа также позволяет настроить предварительные версии (preview) для каждого пулл-реквеста.

  4. Автоматическое развертывание

    Как и в Vercel, Netlify будет автоматически развертывать сайт каждый раз при обновлении репозитория, предоставляя удобный интерфейс для отслеживания статуса развертывания.

  5. Просмотр сайта

    После успешного развертывания Netlify предоставит уникальный URL для просмотра сайта. Также можно настроить собственное доменное имя.

Развертывание на других платформах

Кроме GitHub Pages, Vercel и Netlify существуют и другие хостинги для статических сайтов, такие как Firebase Hosting, Render и другие. В большинстве случаев развертывание будет аналогично вышеописанным процессам:

  • Подключение репозитория или загрузка статических файлов через FTP.
  • Указание команды для сборки и папки с результатами.
  • Автоматическое или ручное развертывание.

Для каждой платформы могут быть свои особенности, однако процесс обычно остается стандартным для статических сайтов.

Завершение развертывания

После того как сайт развернут, необходимо проверить его работоспособность, протестировав все маршруты и интерактивные элементы. Важно удостовериться, что все ссылки работают корректно, и нет ошибок при загрузке ресурсов. Для улучшения производительности можно также применить оптимизацию, такую как минимизация CSS и JavaScript, кэширование ресурсов и использование CDN.