Webpack plugin that runs TypeScript type checker on a separate process.
This plugin requires Node.js >=14.0.0+, Webpack ^5.11.0, TypeScript ^3.6.0
# with npm
npm install --save-dev fork-ts-checker-webpack-plugin
# with yarn
yarn add --dev fork-ts-checker-webpack-plugin
# with pnpm
pnpm add -D fork-ts-checker-webpack-plugin
The minimal webpack config (with ts-loader)
// webpack.config.js
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
module.exports = {
context: __dirname, // to automatically find tsconfig.json
entry: './src/index.ts',
resolve: {
extensions: [".ts", ".tsx", ".js"],
},
module: {
rules: [
{
test: /\.tsx?$/,
loader: 'ts-loader',
// add transpileOnly option if you use ts-loader < 9.3.0
// options: {
// transpileOnly: true
// }
}
]
},
plugins: [new ForkTsCheckerWebpackPlugin()],
watchOptions: {
// for some systems, watching many files can result in a lot of CPU or memory usage
// https://webpack.js.org/configuration/watch/#watchoptionsignored
// don't use this pattern, if you have a monorepo with linked packages
ignored: /node_modules/,
},
};
Examples how to configure it with babel-loader, ts-loader and Visual Studio Code are in the examples directory.
It's very important to be aware that this plugin uses TypeScript's, not
webpack's modules resolution. It means that you have to setup tsconfig.json correctly.
It's because of the performance - with TypeScript's module resolution we don't have to wait for webpack to compile files.
To debug TypeScript's modules resolution, you can use
tsc --traceResolutioncommand.
This plugin uses cosmiconfig. This means that besides the plugin constructor,
you can place your configuration in the:
* "fork-ts-checker" field in the package.json
* .fork-ts-checkerrc file in JSON or YAML format
* fork-ts-checker.config.js file exporting a JS object
Options passed to the plugin constructor will overwrite options from the cosmiconfig (using deepmerge).
| Name | Type | Default value | Description |
|---|---|---|---|
async |
boolean |
compiler.options.mode === 'development' |
If true, reports issues after webpack's compilation is done. Thanks to that it doesn't block the compilation. Used only in the watch mode. |
typescript |
object |
{} |
See TypeScript options. |
issue |
object |
{} |
See Issues options. |
formatter |
string or object or function |
codeframe |
Available formatters are basic, codeframe and a custom function. To configure codeframe formatter, pass: { type: 'codeframe', options: { <coderame options> } }. To use absolute file path, pass: { type: 'codeframe', pathType: 'absolute' }. |
logger |
{ log: function, error: function } or webpack-infrastructure |
console |
Console-like object to print issues in async mode. |
devServer |
boolean |
true |
If set to false, errors will not be reported to Webpack Dev Server. |
Options for the TypeScript checker (typescript option object).
| Name | Type | Default value | Description |
|---|---|---|---|
memoryLimit |
number |
2048 |
Memory limit for the checker process in MB. If the process exits with the allocation failed error, try to increase this number. |
configFile |
string |
'tsconfig.json' |
Path to the tsconfig.json file (path relative to the compiler.options.context or absolute path) |
configOverwrite |
object |
{ compilerOptions: { skipLibCheck: true, sourceMap: false, inlineSourceMap: false, declarationMap: false } } |
This configuration will overwrite configuration from the tsconfig.json file. Supported fields are: extends, compilerOptions, include, exclude, files, and references. |
context |
string |
dirname(configuration.configFile) |
The base path for finding files specified in the tsconfig.json. Same as the context option from the ts-loader. Useful if you want to keep your tsconfig.json in an external package. Keep in mind that not having a tsconfig.json in your project root can cause different behaviour between fork-ts-checker-webpack-plugin and tsc. When using editors like VS Code it is advised to add a tsconfig.json file to the root of the project and extend the config file referenced in option configFile. |
build |
boolean |
false |
The equivalent of the --build flag for the tsc command. |
mode |
'readonly' or 'write-dts' or 'write-tsbuildinfo' or 'write-references' |
`build === true ? 'write-tsbuildin |
$ claude mcp add fork-ts-checker-webpack-plugin \
-- python -m otcore.mcp_server <graph>