workleap-web-configs
SKILL.md
wl-web-configs
Workleap's shared configuration library for web tooling. Provides pre-configured packages for ESLint, TypeScript, Rsbuild, Rslib, Stylelint, and Browserslist.
Philosophy
- No lock-in: Default configurations can always be extended or overridden
- By project type: Configurations are composed internally and offered per project type for simplicity
- ESM/ESNext by default: Targets modern JavaScript environments
- Distributed via NPM: Easy to adopt new features by bumping package versions
Supported Tools (Active)
| Tool | Package | Purpose |
|---|---|---|
| Browserslist | @workleap/browserslist-config |
Browser targets for apps |
| ESLint | @workleap/eslint-configs |
Code linting |
| Stylelint | @workleap/stylelint-configs |
CSS linting |
| TypeScript | @workleap/typescript-configs |
Type checking (linting only) |
| Rsbuild | @workleap/rsbuild-configs |
Web application bundling |
| Rslib | @workleap/rslib-configs |
Library bundling |
In maintenance mode (do not recommend): PostCSS, SWC, webpack, tsup
Quick Reference
Which Configuration to Use?
| Project Type | ESLint | TypeScript | Bundler |
|---|---|---|---|
| Web app with React | defineWebApplicationConfig |
web-application.json |
@workleap/rsbuild-configs |
| React library | defineReactLibraryConfig |
library.json |
@workleap/rslib-configs |
| TypeScript library (no React) | defineTypeScriptLibraryConfig |
library.json |
@workleap/rslib-configs |
| Monorepo workspace root | defineMonorepoWorkspaceConfig |
monorepo-workspace.json |
N/A |
Browserslist (Apps Only)
pnpm add -D @workleap/browserslist-config browserslist
# .browserslistrc
extends @workleap/browserslist-config
Only for projects emitting application bundles. Libraries should NOT include Browserslist.
To add custom browser targets while still using the shared config:
# .browserslistrc
extends @workleap/browserslist-config
IE 11
last 2 OperaMobile 12.1 versions
Detailed Documentation
For comprehensive setup guides and options, read the appropriate reference file:
- ESLint: See references/eslint.md
- TypeScript: See references/typescript.md
- Rsbuild: See references/rsbuild.md
- Rslib: See references/rslib.md
- Stylelint: See references/stylelint.md
Common Patterns
Customizing Default Rules
All define* functions accept a second argument for customization:
// ESLint example
export default defineWebApplicationConfig(import.meta.dirname, {
core: { "no-var": "off" },
typescript: { "@stylistic/quote-props": "off" }
});
// TypeScript example - tsconfig.json
{
"extends": ["@workleap/typescript-configs/web-application.json"],
"compilerOptions": { "strict": false },
"exclude": ["dist", "node_modules"]
}
Configuration Transformers (Advanced)
For full control over Rsbuild/Rslib configs:
import { defineDevConfig, type RsbuildConfigTransformer } from "@workleap/rsbuild-configs";
const customTransformer: RsbuildConfigTransformer = (config) => {
config.tools = config.tools ?? {};
// modify config
return config;
};
export default defineDevConfig({
transformers: [customTransformer]
});
Critical Rules
- Never invent APIs: Only suggest documented options and patterns
- Respect maintenance mode: Do not recommend PostCSS, SWC, webpack, or tsup configs
- ESM by default: All configs target ESM/ESNext unless migrating legacy code
- Browserslist for apps only: Libraries should not include Browserslist config
- TypeScript for linting: The shared TypeScript configs focus on linting; bundlers handle transpilation
Weekly Installs
1
Repository
workleap/wl-web-configsFirst Seen
1 day ago
Installed on
opencode1
codex1
github-copilot1
claude-code1