Releases: webpack/diagnostics-webpack-plugin
Release list
v1.0.0
Changelog
1.0.0
Major Changes
-
quietis gone:reportAssays what a check reports its results as, one value covering its errors and its warnings alike and an object setting them apart, soquiet: trueisreportAs: { warnings: false }. (by @alexander-akait in #317) -
lintDirtyModulesOnlyislintOnStart, inverted and defaulting totrue. It says whether the first compilation lints every file it covers, and a build — which is nothing but a first compilation — now lints whatever it is set to, wherelintDirtyModulesOnly: trueused to leave a build silently unlinted. (by @alexander-akait in #320) -
Renamed from
eslint-webpack-pluginand merged withstylelint-webpack-plugin: one plugin runs every linter through thechecksoption,new DiagnosticsPlugin({ checks: [{ use: "eslint" }, { use: "stylelint" }] }). Errors are reported as webpack errors and warnings as webpack warnings, withreportAsdeciding what each is reported as;stylelintmust be 17 or later. See the migration guides in the README. (by @alexander-akait in #306) -
Dropped Node.js 20, which is end-of-life. The minimum is now Node.js
>= 22.12.0. (by @alexander-akait in #309) -
Rewritten as ECMAScript modules. The package is now
"type": "module"and declares anexportsfield, shipping an ESM build next to a CommonJS one, soimport DiagnosticsPlugin from "diagnostics-webpack-plugin"andrequire("diagnostics-webpack-plugin")both keep working. (by @alexander-akait in #308) -
emitError,emitWarning,failOnErrorandfailOnWarningare onereportAsoption taking"error","warning"orfalse: it says what a check reports its results as, and reporting one as a webpack error is what fails the build. Left unset each result keeps its own severity,quietstill drops the warnings, and the build is no longer aborted from inside the plugin. See the migration table in the README. (by @alexander-akait in #315) -
Validate the options through webpack's own
compiler.validaterather thanschema-utils, which drops the last runtime dependency the plugin had for it. That API arrived in webpack 5.106, so the peer range is now^5.106.0. (by @alexander-akait in #345)
Minor Changes
-
Add a
biomecheck, which checks the files webpack builds with Biome and reports what it finds at Biome's own severities. Run it with{ use: "biome" }, andcommand: "check"to add Biome's formatting diagnostics to the linter's;@biomejs/biome >= 2is an optional peer. (by @alexander-akait in #329) -
Add
buildto thetypescriptcheck, which builds the projects the config file references the waytsc -bdoes — atsconfig.jsonlisting onlyreferencesdescribes an empty program, so a solution reported nothing at all before. It writes each project's declarations, which is what the next project reads, and no JavaScript. (by @alexander-akait in #336) -
Added ESLint bulk suppressions.
applySuppressionsandsuppressionsLocationreach theESLintclass as they are on ESLint 10, and on ESLint 9.24 and later the plugin applies the suppressions itself, since ESLint only wires them into its CLI there. (by @alexander-akait in #311) -
Naming
filesnow means every file they match is checked, whether or not webpack built it, for every check rather than only the ones that walk the file system by themselves. A module nothing imports yet was invisible to the ESLint check before. Left unset, a check still reads what it always read. (by @alexander-akait in #325) -
Add
ignoreDiagnosticsto thetypescriptcheck, the codes of the diagnostics not to report — a linter's rule can be turned off in its own configuration, a TypeScript diagnostic cannot. (by @alexander-akait in #335) -
ignoreDiagnosticsis a shared option every check reads, and takes a rule or code as a string, a match of a file, code and severity together, a list of any of them, or a function over each thing a check found. A TypeScript code as a number, which is all it took before, still means what it did. (by @alexander-akait in #341) -
Add an
oxlintcheck, which lints the files webpack builds with oxlint and reports what it finds at oxlint's own severities. Run it with{ use: "oxlint" };oxlint >= 1is an optional peer. (by @alexander-akait in #328) -
Add
"log"toreportAs, which writes a check's results to webpack's log rather than onto the compilation, so they reach the terminal without the build carrying an error or a warning. (by @alexander-akait in #331) -
threadsis a shared option defaulting to"auto", so every check spreads its work rather than holding the thread webpack builds on: a check that threads its own work is asked to, and one that cannot is run in a pool the plugin owns. Over three hundred modules that takes about a fifth off the build. It was Stylelint's alone and off by default; a check added later now gets it for nothing. (by @alexander-akait in #324) -
Run the
typescriptcheck on a worker thread, so webpack builds while it type checks. A program is read whole rather than a file at a time, sothreadsbuys it webpack's own thread back rather than a share of the work;threads: false, and aformatterwritten as a function, keep it where webpack is. (by @alexander-akait in #343) -
Add a
typescriptcheck, which type checks the program atsconfig.jsondescribes and reports its diagnostics as webpack errors and warnings. Run it with{ use: "typescript" };typescript >= 5is an optional peer. (by @alexander-akait in #327) -
Add
diagnosticOptionsto thetypescriptcheck, which says whether to report each kind of diagnostic — syntactic, semantic, declaration and global. Turning one off asks TypeScript for less rather than dropping what it answered. (by @alexander-akait in #340) -
Add
modeto thetypescriptcheck, which says what it writes as well as reports:readonlywrites nothing,write-tsbuildinfowrites only.tsbuildinfo,write-dtswrites declarations with it, andwrite-referenceswrites everything the compiler emits. It defaults towrite-dtsunderbuild, where a project reads the declarations of the one it references, andreadonlyotherwise — which is what the check did before. (by @alexander-akait in #348) -
Option validation now runs from webpack's
compiler.hooks.validate, so a mistake is reported where webpack validates the rest of the configuration andvalidate: falseturns it off. Where webpack predates the hook, in 5.106, the plugin validates as it did before. (by @alexander-akait in #313)
Patch Changes
-
Run a check the compilation carries nothing of — one whose
reportAsleaves out both its errors and its warnings, writing nooutputReport— after a watch rebuild rather than during it, so that the rebuild is over before the check starts and what it finds is printed to the terminal when it lands. (by @alexander-akait in #333) -
Document
checksitself, list every option in one table, and add a migration fromfork-ts-checker-webpack-plugin. (by @alexander-akait in #339) -
Drop the dependencies nothing uses:
@types/eslint, which ESLint has shipped itself since 9 and which nothing reaches from the package entry, along withdel,@types/micromatchand commitlint. (by @alexander-akait in #346) -
Cover
configType: "eslintrc"over a worker pool, so that the ESLint 9 job in CI...