Releases: webpack/webpack
v5.105.0
Minor Changes
-
Allow resolving worker module by export condition name when using
new Worker()(by @hai-x in #20353) -
Detect conditional imports to avoid compile-time linking errors for non-existent exports. (by @hai-x in #20320)
-
Added the
tsconfigoption for theresolveroptions (replacement fortsconfig-paths-webpack-plugin). Can befalse(disabled),true(use the defaulttsconfig.jsonfile to search for it), a string path totsconfig.json, or an object withconfigFileandreferencesoptions. (by @alexander-akait in #20400) -
Support
import.defer()for context modules. (by @ahabhgk in #20399) -
Added support for array values to the
devtooloption. (by @hai-x in #20191) -
Improve rendering node built-in modules for ECMA module output. (by @hai-x in #20255)
-
Unknown import.meta properties are now determined at runtime instead of being statically analyzed at compile time. (by @xiaoxiaojx in #20312)
Patch Changes
-
Fixed ESM default export handling for
.mjsfiles in Module Federation (by @y-okt in #20189) -
Optimized
import.meta.envhandling in destructuring assignments by using cached stringified environment definitions. (by @xiaoxiaojx in #20313) -
Respect the
stats.errorStackoption in stats output. (by @samarthsinh2660 in #20258) -
Fixed a bug where declaring a
modulevariable in module scope would conflict with the defaultmoduleArgument. (by @xiaoxiaojx in #20265) -
Fix VirtualUrlPlugin to set resourceData.context for proper module resolution. Previously, when context was not set, it would fallback to the virtual scheme path (e.g.,
virtual:routes), which is not a valid filesystem path, causing subsequent resolve operations to fail. (by @xiaoxiaojx in #20390) -
Fixed Worker self-import handling to support various URL patterns (e.g.,
import.meta.url,new URL(import.meta.url),new URL(import.meta.url, import.meta.url),new URL("./index.js", import.meta.url)). Workers that resolve to the same module are now properly deduplicated, regardless of the URL syntax used. (by @xiaoxiaojx in #20381) -
Reuse the same async entrypoint for the same Worker URL within a module to avoid circular dependency warnings when multiple Workers reference the same resource. (by @xiaoxiaojx in #20345)
-
Fixed a bug where a self-referencing dependency would have an unused export name when imported inside a web worker. (by @samarthsinh2660 in #20251)
-
Fix missing export generation when concatenated modules in different chunks share the same runtime in module library bundles. (by @hai-x in #20346)
-
Fixed
import.meta.env.xxxbehavior: when accessing a non-existent property, it now returns empty object instead of full object at runtime. (by @xiaoxiaojx in #20289) -
Improved parsing error reporting by adding a link to the loader documentation. (by @gaurav10gg in #20244)
-
Fix typescript types. (by @alexander-akait in #20305)
-
Add declaration for unused harmony import specifier. (by @hai-x in #20286)
-
Fix compressibility of modules while retaining portability. (by @dmichon-msft in #20287)
-
Optimize source map generation: only include
ignoreListproperty when it has content, avoiding empty arrays in source maps. (by @xiaoxiaojx in #20319) -
Preserve star exports for dependencies in ECMA module output. (by @hai-x in #20293)
-
Consider asset modulem to be side-effect free. (by @hai-x in #20352)
-
Avoid generating JavaScript modules for CSS exports that are not used, reducing unnecessary output and bundle size. (by @xiaoxiaojx in #20337)
v5.104.1
v5.104.0
5.104.0
Minor Changes
- d3dd841: Use method shorthand to render module content in
__webpack_modules__object. - d3dd841: Enhance
import.meta.envto support object access. - 4baab4e: Optimize dependency sorting in updateParent: sort each module only once by deferring to finishUpdateParent(), and reduce traversal count in sortWithSourceOrder by caching WeakMap values upfront.
- 04cd530: Handle more at-rules for CSS modules.
- cafae23: Added options to control the renaming of at-rules and various identifiers in CSS modules.
- d3dd841: Added
base64url,base62,base58,base52,base49,base36,base32andbase25digests. - 5983843: Provide a stable runtime function variable
__webpack_global__. - d3dd841: Improved
localIdentNamehashing for CSS.
Patch Changes
- 22c48fb: Added module existence check for informative error message in development mode.
- 50689e1: Use the fully qualified class name (or export name) for
[fullhash]placeholder in CSS modules. - d3dd841: Support universal lazy compilation.
- d3dd841: Fixed module library export definitions when multiple runtimes.
- d3dd841: Fixed CSS nesting and CSS custom properties parsing.
- d3dd841: Don't write fragment from URL to filename and apply fragment to module URL.
- aab1da9: Fixed bugs for
css/globaltype. - d3dd841: Compatibility
import.meta.filenameandimport.meta.dirnamewithevaldevtools. - d3dd841: Handle nested
__webpack_require__. - 728ddb7: The speed of identifier parsing has been improved.
- 0f8b31b: Improve types.
- d3dd841: Don't corrupt
debugIdinjection whenhidden-source-mapis used. - 2179fdb: Re-validate HttpUriPlugin redirects against allowedUris, restrict to http(s) and add a conservative redirect limit to prevent SSRF and untrusted content inclusion. Redirects failing policy are rejected before caching/lockfile writes.
- d3dd841: Serialize
HookWebpackError. - d3dd841: Added ability to use built-in properties in dotenv and define plugin.
- 3c4319f: Optimizing the regular expression character class by specifying ranges for runtime code.
- d3dd841: Reduce collision for local indent name in CSS.
- d3dd841: Remove CSS link tags when CSS imports are removed.
v5.103.0
Features
- Added
DotenvPluginand top leveldotenvoption to enable this plugin - Added
WebpackManifestPlugin - Added support the
ignoreListoption in devtool plugins - Allow to use custom javascript parse function
- Added
import.meta.envsupport for environment variables - Added support for
import.meta.dirnameandimport.meta.filename - Added support
import.defer()for statistical path - Handle import.meta.main
- Added suport to setup named exports for JSON modules and disable usage named export for
import file from "./file.json" with { type: "json" } - Added support
__dirname/__filename/import.meta.dirname/import.meta.filenamefor universal target - [CSS] Added the
exportTypeoption withlink(by default), "text" andcss-style-sheetvalues - [CSS] Added support for
composesproperties
Fixes
- The
dependOnchunk must be loaded before the common chunk - Return to namespace import when the external request includes a specific export
- No runtime extra runtime code for module libraries
- Delay HMR accept dependencies to preserve import attributes
- Properly handle external presets for universal target
- Fixed incorrect identifier of import binding for module externals
- Fixed when defer import and dynamic default export mixed
- Reduce generated output when
globalThissupported - Fixed loading async modules in defer import
- Reexport module for default import when no used exports for systemjs library
- Rename HarmonyExportDependencyParserPlugin exported id to CompatibilityPlugin tagged id
- Handle
__dirnameand__filenamefor ES modules - Rename single nested
__webpack_export__and__webpack_require__in already bundled code - [Types] webpack function type
- [Types] NormalModule type
- [Types] Multi compiler configuration type
- [Types] Fixed regression in custom
hashDigesttype - [CSS] No extra runtime for initial chunk
- [CSS] Fixed a lot of CSS modules bugs
v5.102.1
Fixes
- Supported
extendswithenvforbrowserslist - Supported
JSONPfragment format for web workers. - Fixed dynamic import support in workers using
browserslist. - Fixed default defer import mangling.
- Fixed default import of
commonjsexternals forSystemJSformat. - Fixed context modules to the same file with different import attributes.
- Fixed typescript types.
- Improved
import.metawarning messages to be more clear when used directly. - [CSS] Fixed CC_UPPER_U parsing (E -> U) in tokenizer.
v5.102.0
Features
- Added static analyze for dynamic imports
- Added support for
import file from "./file.ext" with { type: "bytes" }to get the content asUint8Array(look at example) - Added support for
import file from "./file.ext" with { type: "text" }to get the content as text (look at example) - Added the
snapshot.contextModuleto configure snapshots options for context modules - Added the
extractSourceMapoption to implement the capabilities of loading source maps by comment, you don't needsource-map-loader(look at example) - The
topLevelAwaitexperiment is now stable (you can removeexperiments.topLevelAwaitfrom yourwebpack.config.js) - The
layersexperiment is now stable (you can removeexperiments.layersfrom yourwebpack.config.js) - Added function matcher support in rule options
Fixes
- Fixed conflicts caused by multiple concatenate modules
- Ignore import failure during HMR update with ES modules output
- Keep render module order consistent
- Prevent inlining modules that have
thisexports - Removed unused
timeoutattribute of script tag - Supported UMD chunk format to work in web workers
- Improved CommonJs bundle to ES module library
- Use
es-lexerformjsfiles for build dependencies - Fixed support
__non_webpack_require__for ES modules - Properly handle external modules for CSS
- AssetsByChunkName included assets from
chunk.auxiliaryFiles - Use
createRequireonly when output is ES module and target is node - Typescript types
Performance Improvements
- Avoid extra calls for snapshot
- A avoid extra jobs for build dependencies
- Move import attributes to own dependencies
v5.101.3
Fixes
- Fixed resolve execution order issue from extra await in async modules
- Avoid empty block for unused statement
- Collect only specific expressions for destructuring assignment
v5.101.2
Fixes
- Fixed syntax error when comment is on the last line
- Handle var declaration for
createRequire - Distinguish free variable and tagged variable
v5.101.1
Fixes
- Filter deleted assets in
processAdditionalAssetshook - HMR failure in defer module
- Emit assets even if invalidation occurs again
- Export types for serialization and deserialization in plugins and export the
ModuleFactoryclass - Fixed the failure export of internal function for ES module chunk format
- Fixed
GetChunkFilenamefailure caused bydependOnentry - Fixed the import of missing dependency chunks
- Fixed when entry chunk depends on the runtime chunk hash
- Fixed
module.exportsbundle to ESM library - Adjusted the time of adding a group depending on the fragment of execution time
- Fixed circle dependencies when require
RawModuleand condition ofisDeferred - Tree-shakable module library should align preconditions of
allowInlineStartup
v5.101.0
Fixes
- Fixed concatenate optimization for ESM that caused undefined export
- Respect the
output.environment.nodePrefixForCoreModulesoption everywhere - Respect the
output.importMetaNameoption everywhere - Fixed await async dependencies when accepting them during HMR
- Better typescript types
Features
- Added colors helpers for CLI
- Enable tree-shaking for ESM external modules with named imports
- Added the
deferImportoption to parser options
Performance Improvements
- Fixed a regression in module concatenation after implementing deferred import support
- Fixed a potential performance issue in CleanPlugin
- Avoid extra
requirein some places