rsbuild-dev
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.
$ 安裝
git clone https://github.com/doitsu2014/my-blogs-rsbuild /tmp/my-blogs-rsbuild && cp -r /tmp/my-blogs-rsbuild/admin_side/.claude/skills/rsbuild-dev ~/.claude/skills/my-blogs-rsbuild// tip: Run this command in your terminal to install the skill
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. allowed-tools: Bash, Read, Edit, Grep, Glob
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 configurationpackage.json- Scripts and dependenciestsconfig.json- TypeScript configuration.eslintrcoreslint.config.js- ESLint configuration.prettierrc- Prettier configurationtailwind.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
// 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:
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
- 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
pnpm install
pnpm lint
pnpm build
Type Checking
npx tsc --noEmit
Testing
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
Repository
