Rsbuild Development
Overview
This skill helps you work with Rsbuild development tasks including building, running dev server, linting, formatting, and configuration.
Key Files
Configuration
- •
rsbuild.config.ts- Main Rsbuild configuration - •
package.json- Scripts and dependencies - •
tsconfig.json- TypeScript configuration - •
.eslintrcoreslint.config.js- ESLint configuration - •
.prettierrc- Prettier configuration - •
tailwind.config.js- Tailwind CSS configuration
Available Scripts
Development Server
bash
pnpm dev
- •Starts dev server on port 3002
- •Opens browser automatically
- •Hot Module Replacement (HMR) enabled
- •Watch mode for file changes
Build for Production
bash
pnpm build
- •Creates optimized production build
- •Output in
dist/directory - •Minified and bundled assets
- •TypeScript compilation
Preview Production Build
bash
pnpm preview
- •Serves the production build locally
- •Test production build before deployment
Linting
bash
pnpm lint
- •Runs ESLint on all source files
- •Checks for code quality issues
- •Reports errors and warnings
Code Formatting
bash
pnpm format
- •Formats code with Prettier
- •Applies consistent code style
- •Formats all files in project
Rsbuild Configuration
Current Setup
typescript
// rsbuild.config.ts
import { defineConfig, loadEnv } from '@rsbuild/core';
import { pluginReact } from '@rsbuild/plugin-react';
const { publicVars } = loadEnv();
export default defineConfig({
server: {
port: 3002
},
resolve: {
alias: {
'@': './src',
},
},
source: {
define: publicVars,
},
plugins: [
pluginReact(),
]
});
Key Features
- •Port: 3002 (configurable)
- •Path Alias:
@maps to./src - •Environment Variables:
PUBLIC_*vars exposed to client - •React Plugin: JSX/TSX support with optimizations
Common Tasks
Starting Development
- •
Ensure dependencies are installed:
bashpnpm install
- •
Start dev server:
bashpnpm dev
- •
Application opens at
http://localhost:3002
Building for Production
- •
Run build:
bashpnpm build
- •
Check output in
dist/directory - •
Preview build locally:
bashpnpm preview
Fixing Lint Errors
- •
Run linter to see issues:
bashpnpm lint
- •
Many issues can be auto-fixed:
bashpnpm lint --fix
- •
Review and fix remaining issues manually
Formatting Code
- •
Format all files:
bashpnpm format
- •
Check format without writing:
bashpnpm format --check
TypeScript Configuration
Key Settings
- •Strict Mode: Enabled for type safety
- •JSX: React JSX support
- •Path Mapping:
@/*maps to./src/* - •Target: Modern ES syntax
Type Checking
bash
npx tsc --noEmit
- •Checks types without emitting files
- •Useful for CI/CD pipelines
ESLint Configuration
Enabled Rules
- •React Hooks rules
- •React Refresh rules
- •TypeScript ESLint rules
- •Custom project rules
Key Rules
- •No unused variables
- •Consistent code style
- •React best practices
- •TypeScript strict checks
Prettier Configuration
Prettier ensures consistent formatting:
- •2-space indentation
- •Single quotes
- •Semicolons
- •Trailing commas
- •Line width: 80 characters (configurable)
Environment Variables
Public Variables
All PUBLIC_* environment variables are exposed to client:
env
PUBLIC_REST_API_URL=http://localhost:4000/api PUBLIC_GRAPHQL_API_URL=http://localhost:4000/graphql PUBLIC_KEYCLOAK_URL=http://localhost:8080 PUBLIC_KEYCLOAK_REALM=your-realm PUBLIC_KEYCLOAK_CLIENT_ID=your-client-id
Using in Code
typescript
const apiUrl = import.meta.env.PUBLIC_REST_API_URL;
Environment Files
- •
.env- Default environment - •
.env.local- Local overrides (gitignored) - •
.env.production- Production values
Adding Rsbuild Plugins
Available Official Plugins
- •
@rsbuild/plugin-react- React support (already included) - •
@rsbuild/plugin-sass- SASS/SCSS support - •
@rsbuild/plugin-less- Less support - •
@rsbuild/plugin-vue- Vue support - •
@rsbuild/plugin-svgr- SVG as React components
Installing a Plugin
bash
pnpm add -D @rsbuild/plugin-sass
Adding to Configuration
typescript
import { pluginSass } from '@rsbuild/plugin-sass';
export default defineConfig({
plugins: [
pluginReact(),
pluginSass(),
]
});
Configuring Build Options
Output Configuration
typescript
export default defineConfig({
output: {
distPath: {
root: 'dist',
js: 'js',
css: 'css',
},
assetPrefix: '/admin/',
},
});
Source Configuration
typescript
export default defineConfig({
source: {
entry: {
index: './src/index.tsx',
},
},
});
Performance Configuration
typescript
export default defineConfig({
performance: {
chunkSplit: {
strategy: 'split-by-experience',
},
},
});
Debugging Build Issues
Common Issues
- •
Build Fails
- •Check TypeScript errors:
npx tsc --noEmit - •Review error messages carefully
- •Verify all imports are correct
- •Check for missing dependencies
- •Check TypeScript errors:
- •
Dev Server Won't Start
- •Check if port 3002 is already in use
- •Verify environment variables
- •Check for syntax errors in config files
- •Clear cache:
rm -rf node_modules/.cache
- •
HMR Not Working
- •Restart dev server
- •Check browser console for errors
- •Verify React Fast Refresh is enabled
- •Check component exports are named
- •
Import Errors
- •Verify path aliases in
tsconfig.jsonandrsbuild.config.ts - •Check file extensions (.ts, .tsx, .js, .jsx)
- •Ensure files exist at expected paths
- •Verify path aliases in
Performance Optimization
Code Splitting
Rsbuild automatically code-splits:
- •Vendor bundles (node_modules)
- •Async components (lazy imports)
- •Dynamic imports
Tree Shaking
- •Remove unused exports
- •Use named imports
- •Avoid side effects
Caching
- •Long-term caching for assets
- •Content-based hashing
- •Incremental builds in dev
CI/CD Integration
Build Script
bash
pnpm install pnpm lint pnpm build
Type Checking
bash
npx tsc --noEmit
Testing
bash
pnpm test # If tests are configured
Best Practices
- •Always lint and format before committing
- •Use path aliases (
@/) for cleaner imports - •Test production builds locally before deploying
- •Keep dependencies updated regularly
- •Use environment variables for configuration
- •Enable strict TypeScript for better type safety
- •Monitor build size and optimize as needed
- •Use code splitting for large applications
Quick Reference
| Task | Command |
|---|---|
| Start dev server | pnpm dev |
| Build production | pnpm build |
| Preview build | pnpm preview |
| Lint code | pnpm lint |
| Format code | pnpm format |
| Type check | npx tsc --noEmit |
| Install deps | pnpm install |
| Add dependency | pnpm add package-name |
| Add dev dependency | pnpm add -D package-name |
Example Workflow
When starting development:
- •Pull latest code
- •Install dependencies:
pnpm install - •Start dev server:
pnpm dev - •Make changes with HMR
- •Lint code:
pnpm lint - •Format code:
pnpm format - •Type check:
npx tsc --noEmit - •Build:
pnpm build - •Test build:
pnpm preview - •Commit changes