Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Сборка и публикация

Публикация (деплой) — перенос сайта с вашего компьютера на сервер, доступный всем. Сначала Astro собирает проект в папку dist/, затем её содержимое выкладывают на хостинг. Что именно выкладывать, зависит от режима: чисто статический сайт или сайт со страницами по запросу.

Сборка

npm run build
npm run preview

Первая команда собирает сайт в dist/ и выводит в терминале список созданных страниц. Вторая запускает собранную версию на http://localhost:4321 — пройдите по ней перед публикацией: так вы увидите сайт ровно таким, каким его получат посетители.

Статический сайт

Если адаптера нет, в dist/ лежат только HTML, CSS, картинки и скрипты:

dist/
├── index.html
├── about/index.html
├── posts/first-post/index.html
├── rss.xml
├── sitemap-index.xml
└── _astro/

Такую папку можно выложить на любой хостинг статики: GitHub Pages, Netlify, Cloudflare Pages, Vercel или обычный веб-сервер nginx. Сервисы вроде Netlify сами выполняют npm run build после каждого коммита — в их настройках указывают команду сборки npm run build и папку dist.

Сайт с сервером

Если вы подключили адаптер Node.js и у сайта есть страницы с prerender = false, сборка создаёт две части:

ПапкаЧто внутри
dist/client/Статические файлы и заранее собранные страницы
dist/server/Код сервера для страниц по запросу, эндпоинтов и действий

Сервер запускают на хостинге командой:

HOST=0.0.0.0 PORT=8080 node ./dist/server/entry.mjs

Переменные HOST и PORT задают, на каком адресе и порту слушать. На сервер копируют проект, выполняют npm ci и npm run build, а затем эту команду — обычно через менеджер процессов, который перезапустит сайт при сбое.

Другие платформы

Для облачных платформ есть свои адаптеры: npx astro add netlify, npx astro add vercel, npx astro add cloudflare. Код сайта остаётся тем же, меняется только адаптер в astro.config.mjs.

Сайт в подпапке

Если сайт будет жить не в корне домена, а например на https://example.com/blog/, укажите в настройках base: '/blog'. Внутренние ссылки тогда стройте с учётом import.meta.env.BASE_URL.

Частая ошибка

Выкладывают на хостинг весь проект вместе с src/ и node_modules/ и открывают index.astro — браузер показывает исходный код или ошибку. На статический хостинг загружают только содержимое dist/ после npm run build, а секреты из .env задают в настройках хостинга.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.