Przejdź do treści

Pierwszy projekt w Astro — od npm create astro do wdrożenia w 15 minut

Od zera do wdrożonej strony w 15 minut — Astro w pigułce dla tych, którzy nie chcą tracić czasu na konfigurację.

Maciej Sala

Founder StriveLab

5 min czytaniaOpublikowano 29 maja 2026 (Aktualizacja 6 lipca 2026)

Ten artykuł to punkt startowy serii o Astro — jeśli reszta serii zakłada, że masz już projekt, to tutaj go zakładamy od pustego folderu. Bez wcześniejszej wiedzy o Astro, za to z wyjaśnieniem, dlaczego robimy rzeczy tak, a nie inaczej. Zapraszam do lektury.

Czym jest Astro i jaki problem rozwiązuje w pierwszym projekcie

Astro to framework webowy zbudowany wokół jednej obserwacji: większość stron internetowych wysyła do przeglądarki znacznie więcej JavaScriptu, niż potrzebuje. Blog czy strona firmowa to w 90% treść — tekst, obrazy, linki. A mimo to klasyczne aplikacje React czy Vue ładują cały framework, żeby wyświetlić akapit, który mógłby być zwykłym HTML-em.

Astro nazywa ten nadmiar bloatem JavaScriptu i rozwiązuje go u źródła: domyślnie generuje czysty HTML i nie wysyła do przeglądarki ani jednej linijki frameworkowego JS. Interaktywność — formularz, slider, kalkulator — dodajesz świadomie, tylko tam, gdzie jest potrzebna. To podejście nazywa się i rozkładam je szczegółowo w osobnym artykule.

Dla kogo Astro: blogi, dokumentacja, strony firmowe, landing page, portfolio, lekki e-commerce. Wszędzie tam, gdzie treść jest najważniejsza, a interaktywność punktowa. Dla aplikacji z dużą ilością stanu (dashboardy, panele) lepszy bywa Next.js — porównuję oba w osobnym artykule.

Wymagania przed pierwszym projektem Astro: Node 22.12+

Astro 6 wymaga Node.js w wersji 22.12.0 lub wyższej. Wersje nieparzyste (jak v23) nie są wspierane, sprawdzisz swoją za pomocą:

Code
node --version

Jeśli masz starszą wersję, po prostu zaktualizuj Node (np. przez nvm) zanim ruszysz dalej — to najczęstsza przyczyna błędów na samym starcie.

Krok 1: utworzenie pierwszego projektu Astro

Jedna komenda stawia cały projekt z interaktywnym kreatorem:

Code
npm create astro@latest

Kreator zapyta o nazwę projektu, szablon startowy (wybierz pusty albo blog), TypeScript i instalację zależności - po chwili masz działający projekt.

Wchodzisz do katalogu i uruchamiasz serwer deweloperski:

Code
cd moj-projekt
npm run dev

Serwer startuje pod localhost:4321 i odświeża stronę na bieżąco przy każdej zmianie pliku. Pierwsza strona już działa.

Krok 2: struktura projektu Astro po instalacji

Astro ma przewidywalną i minimalną strukturę katalogów, której najważniejsze elementy wyglądają tak:

Code
moj-projekt/
├── src/
│   ├── pages/          ← każdy plik = strona (routing)
│   │   └── index.astro ← strona główna (/)
│   ├── components/     ← komponenty wielokrotnego użytku
│   └── layouts/        ← szablony wspólne dla stron
├── public/             ← statyczne zasoby (obrazy, robots.txt)
├── astro.config.mjs    ← konfiguracja Astro
├── tsconfig.json       ← konfiguracja TypeScript
└── package.json

Dwa katalogi zapamiętaj od razu:

  • src/pages/ — serce routingu, gdzie każdy plik staje się stroną (o tym za chwilę).
  • public/ — pliki kopiowane do builda dosłownie i bez przetwarzania. Tu trafia robots.txt, favicon i statyczne obrazy.

Krok 3: routing oparty na plikach w Astro

Astro nie ma osobnej konfiguracji tras. Struktura plików w src/pages/ jest mapą URL-i — to :

Code
src/pages/index.astro        → /
src/pages/o-mnie.astro       → /o-mnie
src/pages/blog/index.astro   → /blog
src/pages/blog/pierwszy.astro → /blog/pierwszy

Dla tras dynamicznych (np. wpis bloga, którego nazwa nie jest znana z góry) używasz nawiasów kwadratowych w nazwie pliku:

Code
src/pages/blog/[slug].astro  → /blog/cokolwiek

Wewnątrz takiej strony Astro wymaga funkcji getStaticPaths, która mówi, jakie konkretne adresy wygenerować podczas builda:

Code
---
// src/pages/blog/[slug].astro
export function getStaticPaths() {
  return [
    { params: { slug: 'pierwszy-wpis' } },
    { params: { slug: 'drugi-wpis' } },
  ]
}
 
const { slug } = Astro.params
---
 
<h1>Wpis: {slug}</h1>

To wszystko dostajesz bez konfiguracji routera i bez rejestrowania tras.

Krok 4: pierwszy komponent .astro w projekcie

Komponent Astro to plik .astro z dwiema częściami: frontmatter (sekcja skryptu między ---, wykonywana na serwerze/podczas builda) i szablon (HTML poniżej):

Code
---
// src/components/Karta.astro — frontmatter: kod serwerowy
const { tytul, opis } = Astro.props
---
 
<!-- Szablon: HTML z interpolacją -->
<article class="karta">
  <h2>{tytul}</h2>
  <p>{opis}</p>
</article>
 
<style>
  .karta {
    padding: 1.5rem;
    border-radius: 0.5rem;
    border: 1px solid #e5e7eb;
  }
</style>

Trzy rzeczy warte uwagi:

  • Astro.props — komponent przyjmuje dane jak funkcja przyjmuje argumenty.
  • {tytul} — interpolacja wyrażeń JavaScript w HTML, składnia bliska JSX.
  • <style> — style są domyślnie ograniczone do komponentu (scoped), więc nie wyciekają na resztę strony.

Używasz go w stronie, importując i osadzając:

Code
---
// src/pages/index.astro
import Karta from '../components/Karta.astro'
---
 
<Karta tytul="Witaj" opis="To mój pierwszy komponent w Astro." />

Ten komponent nie wysyła do przeglądarki ani bajta JavaScriptu — renderuje się do czystego HTML podczas builda i tak właśnie wygląda „zero JS domyślnie" w praktyce.

Krok 5: build i wdrożenie pierwszego projektu Astro

Statyczną stronę budujesz jedną komendą:

Code
npm run build

Astro generuje folder dist/ z gotowymi plikami HTML, CSS i zoptymalizowanymi zasobami. Dla statycznej strony nie potrzebujesz adaptera — to zwykłe pliki, które wdrożysz na dowolnym hostingu:

  • Vercel / Netlify / Cloudflare Pages — podłączasz repozytorium z GitHuba, a one budują i wdrażają automatycznie przy każdym pushu, darmowy plan w zupełności wystarczy dla małej strony.
  • Dowolny albo serwer plików — wrzucasz zawartość dist/.

Adapter (Vercel, Netlify, Cloudflare, Node) dokładasz dopiero, gdy potrzebujesz renderowania na serwerze albo funkcji dynamicznych — to temat późniejszych artykułów serii, m.in. o Cloudflare Workers.

Co dalej po pierwszym projekcie Astro

Masz działający projekt, a teraz reszta serii układa się w naturalną ścieżkę:

  • Zrozum fundament — architektura wysp wyjaśnia, dlaczego Astro jest szybkie.

  • Dodaj treść z walidacją — Content Collections zamieniają pliki Markdown w typowany system.

  • Dodaj interaktywność świadomie — dyrektywy client decydują, co i kiedy dostaje JavaScript.

  • Zadbaj o widoczność — SEO w Astro pokazuje, jak wykorzystać przewagę wydajnościową w Google.

Ultraszybkie projekty, łączące lekkość ze skalowalnością.
Astro

Często zadawane pytania

Czym jest Astro i do czego się nadaje?

Astro to framework webowy zaprojektowany wokół jednego paradygmatu: wysyłaj do przeglądarki jak najmniej JavaScriptu. Domyślnie generuje statyczny HTML bez kodu klienckiego, a interaktywność dodajesz punktowo. Najlepiej sprawdza się dla stron zorientowanych na treść: blogów, dokumentacji, stron firmowych, landing page i portfolio.

Jakiej wersji Node potrzebuję do Astro?

Node.js w wersji 22.12.0 lub wyższej. Wersje nieparzyste (np. v23) nie są wspierane. Sprawdź swoją wersję komendą node --version przed utworzeniem projektu.

Czy muszę znać React, żeby zacząć z Astro?

Nie. Komponenty .astro mają własną, prostą składnię — HTML z opcjonalną sekcją skryptu na górze. React, Vue czy Svelte dokładasz dopiero tam, gdzie potrzebujesz interaktywności, i to opcjonalnie. Znajomość JSX pomaga, ale nie jest wymagana na start.

Czy wdrożenie statycznej strony Astro wymaga adaptera?

Nie. Domyślnie Astro buduje statyczny HTML, który wdrożysz na dowolnym hostingu plików statycznych (Vercel, Netlify, Cloudflare Pages) bez adaptera - będzie potrzebny dopiero dla renderowania na serwerze (SSR) albo funkcji dynamicznych.

Jak uruchomić lokalny serwer deweloperski Astro?

Po zainstalowaniu zależności wpisujesz npm run dev. Serwer startuje domyślnie pod adresem localhost:4321 i odświeża stronę na bieżąco przy każdej zmianie pliku.

O autorze

Maciej Sala

Maciej Sala — Product Manager i Frontend Developer z bogatym doświadczeniem w marketingu internetowym oraz SEO. Na co dzień pracuje z Reactem, Next.js i TypeScriptem, a ostatnio także z Astro i narzędziami do automatyzacji procesów AI. Sprawnie łączy perspektywę produktową z praktycznym podejściem do kodu. Przez kilka lat był związany z branżą gier wideo jako project manager i game designer. Absolwent historii na Uniwersytecie Jagiellońskim oraz studiów podyplomowych z marketingu internetowego na AGH w Krakowie. Po godzinach trenuje na siłowni, maluje figurki i rozwijam własne projekty.

Pomagam przekładać takie tematy na konkretne wdrożenia w frontendzie, SEO, analityce i procesie produktowym.

Skontaktuj się ze mną

Biblioteka wiedzy na temat Astro

Czytaj dalej

Zobacz więcej wpisów
Astro vs Next.js w 2026: Porównanie frameworków

Astro czy Next.js? Wybór frameworka musi być dokładnie przemyślany, zanim pojawi się pierwszy commit. Jeśli stoisz przed takim właśnie wyborem, w tym artykule staram się wykazać, w jakich obszarach najlepiej sprawdza się Astro , a w jakich będzie dominował Next.js .

Maciej Sala

Maciej Sala

Founder StriveLab

Astro 6 — przewodnik po nowościach: Cloudflare Workers, Live Content Collections, Fonts API i CSP

Rynek frameworków podzielił się wyraźnie: Vercel + Next.js kontra Cloudflare + Astro. Astro 6 wprowadza dużo wartościowych nowości, które wyraźnie zmieniają model pracy. W tym wpisie pokazuję, co realnie zmieniło się z perspektywy technicznej i co musisz sprawdzić przed migracją.

Maciej Sala

Maciej Sala

Founder StriveLab

Astro 7: Buildy szybsze nawet o 61%. Przegląd nowości realnie tnących koszty CI/CD

Astro 7 wyszło 22 czerwca 2026 i jeśli miałbym te zmiany opisać jednym słowem, brzmiałoby ono: szybkość . Ale nie ta, którą zobaczy użytkownik w przeglądarce, ponieważ Astro od dawna serwuje statyczny HTML i nie ma tu wiele do poprawy. Tym razem wysiłki deweloperów poszły w szybkość pracy zespołu: czas builda, pętlę zwrotną w developmencie i skalowanie do projektów liczonych w tysiącach podstron.

Maciej Sala

Maciej Sala

Founder StriveLab