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
rslib buildto build - Use
rslib build --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