v5.105.0
Features
- Resolve worker modules by export condition name in
new Worker() - Detect conditional imports to prevent compile-time linking errors for non-existent exports
- Added
tsconfigresolver option (replacestsconfig-paths-webpack-plugin): acceptsfalse,true, string path, or object withconfigFile/references - Support
import.defer()for context modules devtooloption now accepts array valuesimport.metaproperties resolved at runtime instead of compile-time- Improved Node.js built-in module rendering for ESM output
Fixes
- ESM default export handling for
.mjsfiles in Module Federation - Worker self-import deduplication across various URL patterns (
import.meta.url,new URL()variants) - Reuse async entrypoint for identical Worker URLs to avoid circular dependency warnings
import.meta.env.xxxnow returns empty object when accessing non-existent properties- VirtualUrlPlugin context resolution for proper subsequent module resolution
- Module Federation: fixed missing exports in concatenated modules across chunks with shared runtime
- Self-referencing dependency with unused exports in web workers
- Unused harmony import specifier declarations
- Star exports preservation in ESM output
- CSS exports not generating unnecessary JavaScript modules
- Source map generation: omit empty
ignoreListarrays
Improvements
- Optimized
import.meta.envdestructuring with cached stringified definitions - Respect
stats.errorStackoption in output - Asset modules treated as side-effect free
- Module compressibility while retaining portability
- Parser error reporting now links to loader documentation
- TypeScript types fixes
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)