| name | rsbuild-dev |
| description | Run development tasks including build, dev server, linting, formatting, and Rsbuild configuration. Use when building the project, starting dev server, fixing lint errors, formatting code, or configuring Rsbuild. Use when this capability is needed. |
| metadata | {"author":"doitsu2014"} |
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
.eslintrc or eslint.config.js - ESLint configuration
.prettierrc - Prettier configuration
tailwind.config.js - Tailwind CSS configuration
Available Scripts
Development Server
pnpm dev
- Starts dev server on port 3002
- Opens browser automatically
- Hot Module Replacement (HMR) enabled
- Watch mode for file changes
Build for Production
pnpm build
- Creates optimized production build
- Output in
dist/ directory
- Minified and bundled assets
- TypeScript compilation
Preview Production Build
pnpm preview
- Serves the production build locally
- Test production build before deployment
Linting
pnpm lint
- Runs ESLint on all source files
- Checks for code quality issues
- Reports errors and warnings
Code Formatting
pnpm format
- Formats code with Prettier
- Applies consistent code style
- Formats all files in project
Rsbuild Configuration
Current Setup
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:
pnpm install
-
Start dev server:
pnpm dev
-
Application opens at http://localhost:3002
Building for Production
-
Run build:
pnpm build
-
Check output in dist/ directory
-
Preview build locally:
pnpm preview
Fixing Lint Errors
-
Run linter to see issues:
pnpm lint
-
Many issues can be auto-fixed:
pnpm lint --fix
-
Review and fix remaining issues manually
Formatting Code
-
Format all files:
pnpm format
-
Check format without writing:
pnpm 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
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:
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
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
pnpm add -D @rsbuild/plugin-sass
Adding to Configuration
import { pluginSass } from '@rsbuild/plugin-sass';
export default defineConfig({
plugins: [
pluginReact(),
pluginSass(),
]
});
Configuring Build Options
Output Configuration
export default defineConfig({
output: {
distPath: {
root: 'dist',
js: 'js',
css: 'css',
},
assetPrefix: '/admin/',
},
});
Source Configuration
export default defineConfig({
source: {
entry: {
index: './src/index.tsx',
},
},
});
Performance Configuration
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
-
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.json and rsbuild.config.ts
- Check file extensions (.ts, .tsx, .js, .jsx)
- Ensure files exist at expected paths
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
pnpm install
pnpm lint
pnpm build
Type Checking
npx tsc --noEmit
Testing
pnpm test
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
Converted and distributed by TomeVault — claim your Tome and manage your conversions.