Gathering detailed insights and metrics for fork-ts-checker-webpack-plugin
Gathering detailed insights and metrics for fork-ts-checker-webpack-plugin
Gathering detailed insights and metrics for fork-ts-checker-webpack-plugin
Gathering detailed insights and metrics for fork-ts-checker-webpack-plugin
fork-ts-checker-webpack-plugin-alt
Runs typescript type checker and linter on separate process.
fork-ts-checker-notifier-webpack-plugin
a notifier for users of fork-ts-checker-webpack-plugin
@types/fork-ts-checker-webpack-plugin
Stub TypeScript definitions entry for fork-ts-checker-webpack-plugin, which provides its own types definitions
fork-ts-checker-webpack-plugin-v5
security holding package
Webpack plugin that runs typescript type checker on a separate process.
npm install fork-ts-checker-webpack-plugin
Typescript
Module System
Min. Node Version
Node Version
NPM Version
86.4
Supply Chain
72.3
Quality
76
Maintenance
100
Vulnerability
98.9
License
TypeScript (94.26%)
JavaScript (4.77%)
Dockerfile (0.9%)
Shell (0.07%)
Total Downloads
3,281,060,262
Last Day
729,354
Last Week
15,418,210
Last Month
66,427,692
Last Year
720,968,172
MIT License
1,984 Stars
645 Commits
246 Forks
18 Watchers
3 Branches
111 Contributors
Updated on Jun 28, 2025
Minified
Minified + Gzipped
Latest Version
9.1.0
Package Id
fork-ts-checker-webpack-plugin@9.1.0
Unpacked Size
206.73 kB
Size
43.72 kB
File Count
168
NPM Version
10.8.2
Node Version
20.19.0
Published on
Apr 03, 2025
Cumulative downloads
Total Downloads
12
2
40
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
1# with npm 2npm install --save-dev fork-ts-checker-webpack-plugin 3 4# with yarn 5yarn add --dev fork-ts-checker-webpack-plugin 6 7# with pnpm 8pnpm add -D fork-ts-checker-webpack-plugin
The minimal webpack config (with ts-loader)
1// webpack.config.js 2const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); 3 4module.exports = { 5 context: __dirname, // to automatically find tsconfig.json 6 entry: './src/index.ts', 7 resolve: { 8 extensions: [".ts", ".tsx", ".js"], 9 }, 10 module: { 11 rules: [ 12 { 13 test: /\.tsx?$/, 14 loader: 'ts-loader', 15 // add transpileOnly option if you use ts-loader < 9.3.0 16 // options: { 17 // transpileOnly: true 18 // } 19 } 20 ] 21 }, 22 plugins: [new ForkTsCheckerWebpackPlugin()], 23 watchOptions: { 24 // for some systems, watching many files can result in a lot of CPU or memory usage 25 // https://webpack.js.org/configuration/watch/#watchoptionsignored 26 // don't use this pattern, if you have a monorepo with linked packages 27 ignored: /node_modules/, 28 }, 29};
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 --traceResolution
command.
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 formatfork-ts-checker.config.js
file exporting a JS objectOptions 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-tsbuildinfo' ? 'readonly' | Use readonly if you don't want to write anything on the disk, write-dts to write only .d.ts files, write-tsbuildinfo to write only .tsbuildinfo files, write-references to write both .js and .d.ts files of project references (last 2 modes requires build: true ). |
diagnosticOptions | object | { syntactic: false, semantic: true, declaration: false, global: false } | Settings to select which diagnostics do we want to perform. |
profile | boolean | false | Measures and prints timings related to the TypeScript performance. |
typescriptPath | string | require.resolve('typescript') | If supplied this is a custom path where TypeScript can be found. |
Options for the issues filtering (issue
option object).
I could write some plain text explanation of these options but I think code will explain it better:
1interface Issue { 2 severity: 'error' | 'warning'; 3 code: string; 4 file?: string; 5} 6 7type IssueMatch = Partial<Issue>; // file field supports glob matching 8type IssuePredicate = (issue: Issue) => boolean; 9type IssueFilter = IssueMatch | IssuePredicate | (IssueMatch | IssuePredicate)[];
Name | Type | Default value | Description |
---|---|---|---|
include | IssueFilter | undefined | If object , defines issue properties that should be matched. If function , acts as a predicate where issue is an argument. |
exclude | IssueFilter | undefined | Same as include but issues that match this predicate will be excluded. |
Include issues from the src
directory, exclude issues from .spec.ts
files:
1module.exports = { 2 // ...the webpack configuration 3 plugins: [ 4 new ForkTsCheckerWebpackPlugin({ 5 issue: { 6 include: [ 7 { file: '**/src/**/*' } 8 ], 9 exclude: [ 10 { file: '**/*.spec.ts' } 11 ] 12 } 13 }) 14 ] 15};
This plugin provides some custom webpack hooks:
Hook key | Type | Params | Description |
---|---|---|---|
start | AsyncSeriesWaterfallHook | change, compilation | Starts issues checking for a compilation. It's an async waterfall hook, so you can modify the list of changed and removed files or delay the start of the service. |
waiting | SyncHook | compilation | Waiting for the issues checking. |
canceled | SyncHook | compilation | Issues checking for the compilation has been canceled. |
error | SyncHook | compilation | An error occurred during issues checking. |
issues | SyncWaterfallHook | issues, compilation | Issues have been received and will be reported. It's a waterfall hook, so you can modify the list of received issues. |
To access plugin hooks and tap into the event, we need to use the getCompilerHooks
static method.
When we call this method with a webpack compiler instance, it returns the object with
tapable hooks where you can pass in your callbacks.
1// ./src/webpack/MyWebpackPlugin.js 2const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); 3 4class MyWebpackPlugin { 5 apply(compiler) { 6 const hooks = ForkTsCheckerWebpackPlugin.getCompilerHooks(compiler); 7 8 // log some message on waiting 9 hooks.waiting.tap('MyPlugin', () => { 10 console.log('waiting for issues'); 11 }); 12 // don't show warnings 13 hooks.issues.tap('MyPlugin', (issues) => 14 issues.filter((issue) => issue.severity === 'error') 15 ); 16 } 17} 18 19module.exports = MyWebpackPlugin; 20 21// webpack.config.js 22const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); 23const MyWebpackPlugin = require('./src/webpack/MyWebpackPlugin'); 24 25module.exports = { 26 /* ... */ 27 plugins: [ 28 new ForkTsCheckerWebpackPlugin(), 29 new MyWebpackPlugin() 30 ] 31};
When using TypeScript 4.3.0 or newer you can profile long type checks by setting "generateTrace" compiler option. This is an instruction from microsoft/TypeScript#40063:
tsconfig.json
(under compilerOptions
)legend.json
telling you what went where.
Otherwise, there will be trace.json
file and types.json
files.trace.json
types.json
in an editorYou must both set "incremental": true in your tsconfig.json
(under compilerOptions
) and also specify mode: 'write-references' in ForkTsCheckerWebpackPlugin
settings.
ts-loader
- TypeScript loader for webpack.babel-loader
- Alternative TypeScript loader for webpack.fork-ts-checker-notifier-webpack-plugin
- Notifies about build status using system notifications (similar to the webpack-notifier).This plugin was created in Realytics in 2017. Thank you for supporting Open Source.
MIT License
No vulnerabilities found.
Reason
no dangerous workflow patterns detected
Reason
GitHub workflow tokens follow principle of least privilege
Details
Reason
no binaries found in the repo
Reason
license file detected
Details
Reason
Found 9/16 approved changesets -- score normalized to 5
Reason
2 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 1
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
Reason
project is not fuzzed
Details
Reason
dependency not pinned by hash detected -- score normalized to 0
Details
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
Reason
10 existing vulnerabilities detected
Details
Score
Last Scanned on 2025-06-30
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn MoreLast Day
-10.5%
729,354
Compared to previous day
Last Week
-8.5%
15,418,210
Compared to previous week
Last Month
2.5%
66,427,692
Compared to previous month
Last Year
-1.4%
720,968,172
Compared to previous year