rslib-best-practices
communityRslib best practices for config, CLI workflow, output, declaration files, dependency handling, build optimization and toolchain integration. Use when writing, reviewing, or troubleshooting Rslib projects.
>_rstackjs/agent-skills/skills/rslib-best-practices·commit c6b7f9e
name: rslib-best-practices description: Rslib best practices for config, CLI workflow, output, declaration files, dependency handling, build optimization and toolchain integration. Use when writing, reviewing, or troubleshooting Rslib projects.
Rslib Best Practices
Apply these rules when writing or reviewing Rslib library projects.
Configuration
- Use
rslib.config.tsanddefineConfig - Check Rslib-specific configurations first (e.g.,
lib.*), and also leverage Rsbuild configurations (e.g.,source.*,output.*,tools.*) as needed - For deep-level or advanced configuration needs, use
tools.rspackortools.bundlerChainto access Rspack's native configurations - In TypeScript projects, prefer
tsconfig.jsonpath aliases
CLI
- Use
rslibto build - Use
rslib --watchto build in watch mode for local development - Use
rslib inspectto inspect final Rslib/Rsbuild/Rspack configs
Output
- Prefer to build pure-ESM package with
"type": "module"inpackage.json - Prefer to use bundleless mode with
output.targetset to'web'when building component libraries - Prefer to use bundle mode when building Node.js utility libraries
- Ensure
exportsfield inpackage.jsonis correctly configured and matches the actual JavaScript output and declaration files output of different formats (ESM, CJS, etc.)
Declaration files
- Prefer to enable declaration file generation with
lib.dts: trueor detailed configurations - For faster type generation, enable
lib.dts.tsgoexperimental feature with@typescript/native-previewinstalled
Dependencies
- Prefer to place dependencies to be bundled in
devDependenciesin bundle mode and dependencies independenciesandpeerDependencieswill be automatically externalized (not bundled) by default - Verify the build output and dependency specifiers in
package.jsoncarefully to ensure no missing dependency errors occur when consumers install and use this package
Build optimization
- Keep syntax target in
lib.syntaxaligned with real compatibility requirements to enable better optimizations - Avoid format-specific APIs in source code for better compatibility with different output formats
- Prefer lightweight dependencies to reduce bundle size
Toolchain integration
- Prefer to use Rstest with
@rstest/adapter-rslibfor writing tests - Prefer to use Rspress for writing library documentation, with
@rspress/plugin-previewand@rspress/plugin-api-docgenfor component previews and API docs
Debugging
- Run with
DEBUG=rsbuildwhen diagnosing config resolution or plugin behavior - Read generated files in
dist/.rsbuildto confirm final Rsbuild/Rspack config, not assumed config
Documentation
- For the latest Rslib docs, read https://rslib.rs/llms.txt