Cloudflare Pages + Wrangler CLI: Kompletny Przewodnik
Ten poradnik pokaże Ci, jak skonfigurować projekt tak, aby był future-proof (odporny na przyszłe zmiany) i gotowy do wdrożenia zarówno dla prostego HTML, jak i zaawansowanych frameworków (React, Vue, Vite). Zamiast przeciągać pliki przez przeglądarkę, nauczysz się używać oficjalnego narzędzia CLI od Cloudflare.
📋 Wymagania wstępne
- Node.js (wersja LTS) zainstalowane na komputerze.
- Konto na Cloudflare (darmowe w zupełności wystarczy).
- Podstawowy terminal (PowerShell, CMD, Bash, Zsh).
KROK 1: Inicjalizacja projektu (Złota Zasada Nazewnictwa)
Najczęstszym błędem w ekosystemie Node.js i Cloudflare są polskie znaki i spacje w nazwach folderów. Zawsze używaj małych liter i myślników.
⚠️ Uwaga: Nazewnictwo
ŹLE: C:\Projekty\Artykuł Raport WMU
DOBRZE: C:\Projects\raport-wmu
Utwórz folder i zainicjalizuj plik package.json:
PS> mkdir raport-wmu
PS> cd raport-wmu
PS> npm init -y
KROK 2: Instalacja Wranglera
Zainstaluj Wrangler jako zależność deweloperską (devDependency). Dzięki temu narzędzie będzie przypisane do tego konkretnego projektu i nie zaśmieci globalnie Twojego systemu.
PS> npm install wrangler --save-dev
KROK 3: Autoryzacja (Logowanie do Cloudflare)
Zanim cokolwiek wyślesz, Wrangler musi wiedzieć, na jakie konto ma to zrobić.
PS> npx wrangler login
Co się stanie: Otworzy się przeglądarka. Zaloguj się do Cloudflare i kliknij Allow / Zezwól. W terminalu pojawi się komunikat potwierdzający sukces.
KROK 4: Konfiguracja (Dwie Ścieżki)
W przyszłych projektach masz do wyboru dwie metody konfiguracji. Metoda A to oficjalny standard Cloudflare (zalecana). Metoda B to szybki skrót.
🏆 Metoda A: Plik wrangler.toml (Zalecane / Future-Proof)
Zamiast zaśmiecać package.json, tworzysz w głównym katalogu plik wrangler.toml.
Dla projektu Statycznego HTML (jak Twój raport):
# wrangler.toml
name = "raport-wmu"
# Wskazuje Wranglerowi, gdzie szukać plików do wgrania
pages_build_output_dir = "./"
Dla projektu z Frameworkiem (np. React, Vite, Vue):
# wrangler.toml
name = "moja-aplikacja-react"
# Pliki kompilują się do folderu dist lub build
pages_build_output_dir = "./dist"
⚡ Metoda B: Skrypt w package.json (Szybka)
Otwierasz package.json i dodajesz skrypt w sekcji "scripts":
// package.json
"scripts": {
"deploy": "wrangler pages deploy ."
}
(Używamy . dla HTML-a, lub ./dist dla Reacta/Vite).
KROK 5: Wdrożenie (Deploy)
Jeśli użyłeś Metody A (plik wrangler.toml):
PS> npx wrangler pages deploy
Jeśli użyłeś Metody B (skrypt w package.json):
PS> npm run deploy
🚀 Efekt
Wrangler spakuje pliki, wyśle je do globalnej sieci Cloudflare i zwróci Ci link typu https://raport-wmu.pages.dev. Strona jest live w kilka sekund!
🧠 KROK 6: Jak to działa z Frameworkami? (React, Vite, Next.js)
Kiedy przejdziesz z czystego HTML na frameworki, zasada jest zawsze ta sama: Wrangler nie wdraża Twojego kodu źródłowego, wdraża tylko "zbuildowane" (skompilowane) pliki.
- Tworzysz projekt:
npm create vite@latest my-app - Instalujesz Wrangler:
npm install wrangler --save-dev - Tworzysz
wrangler.tomlz wpisempages_build_output_dir = "./dist" - Budujesz projekt:
npm run build(to tworzy folderdist) - Wdrażasz:
npx wrangler pages deploy
🛡️ Złote Zasady i Troubleshooting (Ściąga)
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
npm error Invalid name |
Folder ma spacje lub polskie znaki (np. ł, ó). |
Zmień nazwę folderu na moj-projekt (bez ogonków i spacji). |
ENOENT: no such file or directory 'package.json' |
Nie zainicjalizowałeś projektu Node.js. | Wpisz npm init -y w katalogu projektu. |
Error: No pages build output directory found |
Wrangler szuka folderu dist, a Ty masz tylko HTML. |
Użyj pages_build_output_dir = "./" w wrangler.toml lub . w skrypcie npm. |
| Chcesz usunąć projekt z Cloudflare | Zmieniłeś nazwę i chcesz posprzątać. | Wejdź w panel Cloudflare -> Workers & Pages -> Usuń projekt. |
💡 Pro-Tip: Git i .gitignore
Jeśli wrzucasz projekty na GitHuba (aby podpiąć je pod Cloudflare przez Continuous Deployment), nigdy nie wrzucaj folderu node_modules.
Zawsze twórz plik .gitignore w głównym katalogu i wpisz w nim:
node_modules/
dist/
.wrangler/
Dzięki temu Twoje repozytorium będzie lekkie, a Cloudflare i tak sam zbuduje projekt po stronie serwera (jeśli użyjesz integracji z GitHubem).