Overview
The Pizza Chef Frontend uses Vite for creating optimized production builds. This guide covers the build process, optimization strategies, and deployment preparation.Build Command
Create a production-ready build:- TypeScript Compilation:
tsc -b- Builds TypeScript project references - Vite Build:
vite build- Creates optimized production bundle
Build Process Breakdown
Step 1: TypeScript Type Checking
Thetsc -b command performs:
- Type checking: Validates all TypeScript code
- Project references: Builds using TypeScript project references
- No emit: Only checks types (Vite handles transpilation)
Step 2: Vite Production Build
Vite performs several optimizations:Code Splitting
Vite automatically splits code into:- Vendor chunks: Third-party libraries (React, Redux, etc.)
- Route chunks: Components loaded per route
- Shared chunks: Common code across multiple routes
Minification
JavaScript and CSS are minified using:- esbuild: Fast JavaScript minification
- CSS minification: Removes whitespace, comments, and unused rules
- Tree shaking: Removes unused code from bundles
Asset Optimization
- Hash-based filenames:
main-[hash].jsfor cache busting - Asset inlining: Small files embedded as base64 URLs
- Image optimization: Optimized asset delivery
Build Output
The build process creates adist/ directory:
Vite Configuration
The build is configured invite.config.ts:
vite.config.ts
Plugin Breakdown
@vitejs/plugin-react-swc
Provides React support with SWC (Speedy Web Compiler):- Fast transpilation: SWC is 20x faster than Babel
- React Fast Refresh: Hot module replacement for React
- JSX transformation: Converts JSX to JavaScript
- TypeScript support: Native TypeScript compilation
- Faster development builds
- Faster production builds
- Smaller bundle sizes
@tailwindcss/vite
Integrates Tailwind CSS 4.0:- JIT compilation: On-demand CSS generation
- Automatic purging: Removes unused CSS in production
- PostCSS integration: Processes Tailwind directives
- Fast rebuilds: Incremental CSS generation
- Removes unused utility classes
- Minifies CSS output
- Generates optimized selectors
Preview Production Build
Test the production build locally:- Serves the
dist/directory - Simulates production environment
- Enables HTTPS testing (if configured)
- Verifies asset loading
http://localhost:4173 by default.
Build Optimization Strategies
1. Bundle Size Analysis
Analyze bundle composition:- Size of each dependency
- Chunk composition
- Largest modules
2. Dynamic Imports
Reduce initial bundle size with route-based code splitting:3. Tree Shaking
Ensure tree shaking works effectively:4. External Dependencies
For CDN-hosted libraries, externalize them:vite.config.ts
Environment Variables
Development vs Production
Vite exposes environment-specific variables:Environment Files
Create.env files for different environments:
.env.production:
Build Performance
SWC vs Babel
The project uses@vitejs/plugin-react-swc instead of @vitejs/plugin-react for:
- 20x faster compilation: SWC is written in Rust
- Smaller bundle sizes: More efficient code generation
- Better tree shaking: More accurate dead code elimination
Dependency Pre-bundling
Vite pre-bundles dependencies for faster builds:- Converts CommonJS to ESM
- Combines multiple modules
- Caches in
node_modules/.vite/
Production Checklist
Before deploying to production:Deployment Targets
Static Hosting (Vercel, Netlify)
Thedist/ directory contains static files ready for deployment:
Docker Deployment
ExampleDockerfile for containerized deployment:
S3 + CloudFront
Deploy to AWS:Build Troubleshooting
Out of Memory Errors
Increase Node.js memory limit:Slow Build Times
Optimize build performance:- Update dependencies: Ensure Vite and plugins are latest versions
- Clear cache: Delete
node_modules/.vite/and rebuild - Reduce bundle size: Use dynamic imports for large routes
- Check plugins: Some plugins can slow builds significantly
Missing Dependencies
If production build fails with missing modules:Build Metrics
Typical build output for Pizza Chef Frontend:- Build time: < 5 seconds for initial build
- Main bundle: < 100 kB gzipped
- Total CSS: < 15 kB gzipped
- Vendor chunk: < 150 kB gzipped
Next Steps
- Review Development Setup for local environment
- Check Testing Guide for quality assurance
- Explore Vite’s build optimizations documentation
- Configure CI/CD pipelines for automated deployments