Nasza kosmiczna podróż przez React dobiega końca. Zbudowaliśmy nasz statek kosmiczny, testowaliśmy go, optymalizowaliśmy - teraz nadszedł czas, aby wypuścić go w przestrzeń międzygwiezdną. W tym module nauczysz się, jak przygotować swoją aplikację React do produkcji i wdrożyć ją na platformie Vercel, aby była dostępna dla użytkowników z całego świata.
Proces przeniesienia aplikacji React ze środowiska deweloperskiego do produkcyjnego wymaga kilku ważnych kroków. Zanim wyślemy naszą aplikację w kosmos (internet), musimy ją odpowiednio przygotować.
Kod, który piszemy podczas developmentu, nie jest optymalny do uruchomienia w przeglądarce użytkownika. Aplikacja produkcyjna powinna być:
Vite (francuski: "szybki") to nowoczesne narzędzie do budowania aplikacji frontendowych, które znacząco przyspiesza proces developmentu i produkcji. W przeciwieństwie do starszych narzędzi (jak Create React App), Vite wykorzystuje natywne moduły ES w przeglądarce podczas developmentu oraz Rollup do budowania produkcyjnego.
Główne zalety Vite:
Przed budowaniem aplikacji produkcyjnej warto wykonać kilka kroków:
Upewnij się, że wszystkie zależności są aktualne i bezpieczne:
1# Sprawdzenie przestarzałych pakietów
2npm outdated
3
4# Sprawdzenie pod kątem podatności bezpieczeństwa
5npm audit
6
7# Aktualizacja pakietów (jeśli to bezpieczne)
8npm updateW kodzie produkcyjnym nie powinny znajdować się instrukcje
console.log czy debugger. Możesz użyć pluginu do Babel lub ESLint, aby je automatycznie usunąć.Dla Vite, możesz dodać plugin
vite-plugin-remove-console:1npm install vite-plugin-remove-console --save-devI skonfigurować go w
vite.config.js:1import { defineConfig } from 'vite';
2import react from '@vitejs/plugin-react';
3import removeConsole from 'vite-plugin-remove-console';
4
5export default defineConfig({
6 plugins: [
7 react(),
8 removeConsole()
9 ],
10});Vite obsługuje zmienne środowiskowe poprzez pliki
.env. Możesz tworzyć różne pliki dla różnych środowisk:.env - zmienne dla wszystkich środowisk.env.development - tylko dla developmentu.env.production - tylko dla produkcjiZmienne muszą zaczynać się od prefiksu
VITE_, aby były dostępne w kodzie:1# .env.production
2VITE_API_URL=https://api.yourdomain.com/v1
3VITE_ANALYTICS_ID=UA-123456789-1W kodzie używasz ich tak:
1const apiUrl = import.meta.env.VITE_API_URL;Budowanie produkcyjne w Vite jest proste - wystarczy uruchomić komendę:
1npm run buildTa komenda wykonuje kilka operacji:
Wynikiem jest katalog
dist (domyślnie) zawierający zbudowaną aplikację.Przed deploymentem warto sprawdzić, czy zbudowana aplikacja działa poprawnie. Vite dostarcza proste narzędzie do lokalnego serwowania buildu produkcyjnego:
1npm run previewTa komenda uruchomi lokalny serwer serwujący zbudowaną aplikację z katalogu
dist, pozwalając na sprawdzenie jej działania przed faktycznym wdrożeniem.Vercel to platforma do deploymentu aplikacji frontendowych, która doskonale współpracuje z React, Next.js i innymi frameworkami. Oferuje globalną CDN, automatyczne deployments z repozytorium Git, HTTPS, oraz wiele innych funkcji.
Vercel integruje się z GitHubem, GitLabem i Bitbucket. Upewnij się, że Twój projekt jest przechowywany w jednym z tych serwisów:
1# Jeśli jeszcze nie zainicjowałeś repozytorium
2git init
3
4# Dodaj pliki do repozytorium
5git add .
6
7# Utwórz commit
8git commit -m "Przygotowanie do deploymentu"
9
10# Dodaj zdalne repozytorium (zastąp URL swoim)
11git remote add origin https://github.com/twój-username/twój-projekt.git
12
13# Wypchnij zmiany
14git push -u origin mainUtwórz konto na Vercel - przejdź na vercel.com i zarejestruj się (najlepiej używając tego samego konta, co w serwisie Git)
Importuj projekt:
Skonfiguruj projekt:
npm run build (zostaw bez zmian)dist (zostaw bez zmian).env.production (bez prefiksu VITE_)Kliknij "Deploy" i poczekaj na zakończenie procesu
Po zakończeniu deploymentu Vercel pokaże stronę z podsumowaniem. Możesz:
twój-projekt.vercel.app)Vercel automatycznie skonfiguruje Continuous Deployment dla Twojego projektu:
main lub master) spowoduje deployment na środowisko produkcyjneTa integracja tworzy prosty i wydajny workflow:
feature/new-featureVercel oferuje Analytics, które pomagają monitorować wydajność aplikacji w realnym świecie:
Aby włączyć Analytics:
Vite automatycznie optymalizuje zasoby podczas buildowania, ale warto pamiętać o kilku dodatkowych praktykach:
<link rel="preload"> dla krytycznych zasobówDla bardziej zaawansowanych aplikacji, Vercel oferuje:
Przykład Edge Middleware do przekierowania użytkowników na podstawie ich lokalizacji:
1// middleware.js
2export default function middleware(request) {
3 const country = request.geo.country || 'US';
4
5 // Przekierowanie użytkowników z Polski na polską wersję strony
6 if (country === 'PL' && !request.nextUrl.pathname.startsWith('/pl')) {
7 return Response.redirect(new URL('/pl' + request.nextUrl.pathname, request.url));
8 }
9}
10
11export const config = {
12 matcher: ['/((?!api|_next/static|favicon.ico).*)'],
13};Zintegruj narzędzie do monitorowania błędów jak Sentry lub LogRocket:
1npm install @sentry/react1// src/main.jsx
2import React from 'react';
3import ReactDOM from 'react-dom/client';
4import * as Sentry from '@sentry/react';
5import App from './App';
6import './index.css';
7
8if (import.meta.env.PROD) {
9 Sentry.init({
10 dsn: import.meta.env.VITE_SENTRY_DSN,
11 integrations: [new Sentry.BrowserTracing()],
12 tracesSampleRate: 0.5,
13 });
14}
15
16ReactDOM.createRoot(document.getElementById('root')).render(
17 <React.StrictMode>
18 <App />
19 </React.StrictMode>
20);Podziel aplikację na mniejsze kawałki, ładowane na żądanie:
1import { lazy, Suspense } from 'react';
2
3// Zamiast: import Dashboard from './Dashboard';
4const Dashboard = lazy(() => import('./Dashboard'));
5
6function App() {
7 return (
8 <div>
9 <Suspense fallback={<div>Ładowanie...</div>}>
10 <Dashboard />
11 </Suspense>
12 </div>
13 );
14}Przekształć swoją aplikację React w PWA, dodając Service Worker i manifest:
1npm install vite-plugin-pwa --save-dev1// vite.config.js
2import { defineConfig } from 'vite';
3import react from '@vitejs/plugin-react';
4import { VitePWA } from 'vite-plugin-pwa';
5
6export default defineConfig({
7 plugins: [
8 react(),
9 VitePWA({
10 registerType: 'autoUpdate',
11 includeAssets: ['favicon.ico', 'robots.txt', 'apple-touch-icon.png'],
12 manifest: {
13 name: 'Space Mission Control',
14 short_name: 'SpaceMission',
15 description: 'Aplikacja do zarządzania misjami kosmicznymi',
16 theme_color: '#ffffff',
17 icons: [
18 {
19 src: 'pwa-192x192.png',
20 sizes: '192x192',
21 type: 'image/png'
22 },
23 {
24 src: 'pwa-512x512.png',
25 sizes: '512x512',
26 type: 'image/png'
27 }
28 ]
29 }
30 })
31 ]
32});Cały proces tworzenia i wdrażania aplikacji React z Vite wygląda następująco:
Development
npm create vite@latest my-app --template reactnpm run devPrzygotowanie do produkcji
Budowanie
npm run buildnpm run previewPrzygotowanie repozytorium
Deployment na Vercel
Post-deployment
Po wdrożeniu aplikacji, Twoje obowiązki jako dewelopera nie kończą się. Ważne jest dalsze:
Ukończyliśmy naszą kosmiczną podróż po React! Zaczynając od podstaw, stopniowo budowaliśmy coraz bardziej zaawansowane komponenty, aż do pełnej aplikacji gotowej do wdrożenia na platformie Vercel.
Pamiętaj, że podobnie jak eksploracja kosmosu, nauka React to niekończąca się podróż. Ecosystem React stale się rozwija, pojawiają się nowe biblioteki, narzędzia i wzorce. Bądź na bieżąco z dokumentacją, blogami i społecznością, aby Twoje umiejętności pozostawały aktualne.
Teraz, gdy Twój statek kosmiczny jest zbudowany, przetestowany i gotowy do lotu - to czas, aby podbić kosmos frontendowych aplikacji!