Rsbuild plugin for checking TypeScript type definitions with arethetypeswrong.
rsbuild-plugin-arethetypeswrong is the perfect partner for Rslib. When building a library, arethetypeswrong helps you to analyze TypeScript types of the package to improve its compatibility with different module resolutions.
Install:
npm add rsbuild-plugin-arethetypeswrong -DAdd plugin to your rslib.config.ts or rsbuild.config.ts:
import { pluginAreTheTypesWrong } from 'rsbuild-plugin-arethetypeswrong';
export default {
plugins: [pluginAreTheTypesWrong()],
};Whether to enable arethetypeswrong.
- Type:
boolean - Default:
true
For example, only run arethetypeswrong in the CI environment:
pluginAreTheTypesWrong({
enable: Boolean(process.env.CI),
});Options for arethetypeswrong. See arethetypeswrong - Configuration for more details.
- Type:
interface areTheTypesWrongOptions {
ignoreRules?: ProblemFlag[];
ignoreResolutions?: ResolutionKind[];
summary?: boolean;
emoji?: boolean;
}
type ProblemFlag =
| 'no-resolution'
| 'untyped-resolution'
| 'false-cjs'
| 'false-esm'
| 'cjs-resolves-to-esm'
| 'fallback-condition'
| 'cjs-only-exports-default'
| 'named-exports'
| 'false-export-default'
| 'missing-export-equals'
| 'unexpected-module-syntax'
| 'internal-resolution-error';
type ResolutionKind = 'node10' | 'node16-cjs' | 'node16-esm' | 'bundler';- Default:
const defaultOptions = {
ignoreRules: [];
ignoreResolutions: [];
summary: true;
emoji: true;
};- Example:
pluginAreTheTypesWrong({
areTheTypesWrongOptions: {
ignoreRules: ['false-cjs'],
ignoreResolutions: ['node16-cjs'],
},
});Thanks to:
- arethetypeswrong for making this possible.
- rsbuild-plugin-publint for the idea of linting as an Rsbuild plugin.
MIT.