An open API service indexing awesome lists of open source software.

https://github.com/rstackjs/rsbuild-plugin-arethetypeswrong

Run `arethetypeswrong` to lint npm packages after the build.
https://github.com/rstackjs/rsbuild-plugin-arethetypeswrong

rsbuild rslib typescript

Last synced: 4 days ago
JSON representation

Run `arethetypeswrong` to lint npm packages after the build.

Awesome Lists containing this project

README

          

# rsbuild-plugin-arethetypeswrong

Rsbuild plugin for checking TypeScript type definitions with [arethetypeswrong](https://github.com/arethetypeswrong/arethetypeswrong.github.io).



npm version

license
downloads

`rsbuild-plugin-arethetypeswrong` is the perfect partner for [Rslib](https://github.com/web-infra-dev/rslib). When building a library, arethetypeswrong helps you to analyze TypeScript types of the package to improve its compatibility with different module resolutions.

image

## Usage

Install:

```bash
npm add rsbuild-plugin-arethetypeswrong -D
```

Add plugin to your `rslib.config.ts` or `rsbuild.config.ts`:

```ts
import { pluginAreTheTypesWrong } from "rsbuild-plugin-arethetypeswrong";

export default {
plugins: [pluginAreTheTypesWrong()],
};
```

## Options

### enable

Whether to enable arethetypeswrong.

- Type: `boolean`
- Default: `true`

For example, only run arethetypeswrong in the CI environment:

```ts
pluginAreTheTypesWrong({
enable: Boolean(process.env.CI),
});
```

### areTheTypesWrongOptions

Options for arethetypeswrong. See [arethetypeswrong - Configuration](https://github.com/arethetypeswrong/arethetypeswrong.github.io/blob/main/packages/cli/README.md#configuration) for more details.

- Type:

```ts
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:

```js
const defaultOptions = {
ignoreRules: [];
ignoreResolutions: [];
summary: true;
emoji: true;
};
```

- Example:

```js
pluginAreTheTypesWrong({
areTheTypesWrongOptions: {
ignoreRules: ["false-cjs"],
ignoreResolutions: ["node16-cjs"],
},
});
```

## Credits

Thanks to:

- [arethetypeswrong](https://github.com/arethetypeswrong/arethetypeswrong.github.io) for making this possible.
- [rsbuild-plugin-publint](https://github.com/rspack-contrib/rsbuild-plugin-publint) for the idea of linting as an Rsbuild plugin.

## License

[MIT](./LICENSE).