Ir al contenido
verdict:

webpack 5.108.0

notable

note: la síntesis y las notas de la versión están en inglés

note: sin síntesis para esta release más antigua

Sintetizamos las releases recientes. Las notas de la versión originales de esta versión están aquí abajo.

release-notesgithub.com/webpack/webpack · 227 líneas
  1. ### Minor Changes
  2. - Treat top-level await and `import.meta` as ES module markers, matching Node.js syntax detection so no explicit module type is needed. (by [@alexander-akait](https://github.com/alexander-akait) in [#21218](https://github.com/webpack/webpack/pull/21218))
  3. - Add a `bun` target that emits ESM and externalizes `bun:*` and node.js built-in modules. (by [@alexander-akait](https://github.com/alexander-akait) in [#21248](https://github.com/webpack/webpack/pull/21248))
  4. - Support CommonJS reexports via `Object.defineProperty` value and getter descriptors. (by [@alexander-akait](https://github.com/alexander-akait) in [#21129](https://github.com/webpack/webpack/pull/21129))
  5. - Support JSON Schema `const` when generating CLI flags from a schema. (by [@alexander-akait](https://github.com/alexander-akait) in [#21087](https://github.com/webpack/webpack/pull/21087))
  6. - Support JSON Schema `if`/`then`/`else` when generating CLI flags from a schema. (by [@alexander-akait](https://github.com/alexander-akait) in [#21087](https://github.com/webpack/webpack/pull/21087))
  7. - Skip import specifiers, `require()` and `import()` calls in dead conditional branches gated by inlined imported constants (`isDEV ? A : B`), evaluated via `getCondition`. (by [@hai-x](https://github.com/hai-x) in [#21136](https://github.com/webpack/webpack/pull/21136))
  8. - CSS `localIdentName` `[hash]` now resolves to the local ident hash (matching css-loader); use `[modulehash]` for the module hash. (by [@alexander-akait](https://github.com/alexander-akait) in [#21259](https://github.com/webpack/webpack/pull/21259))
  9. - Add CSS parser `as` option and resolve `url()` inside HTML `style` attributes. (by [@alexander-akait](https://github.com/alexander-akait) in [#21157](https://github.com/webpack/webpack/pull/21157))
  10. - Add dedicated module classes for all built-in module types. (by [@alexander-akait](https://github.com/alexander-akait) in [#21164](https://github.com/webpack/webpack/pull/21164))
  11. - Support `.html`/`.css` for the default `./src` entry under the html/css experiments. (by [@alexander-akait](https://github.com/alexander-akait) in [#21039](https://github.com/webpack/webpack/pull/21039))
  12. - Add `defineConfig` helper for typed configuration files. (by [@alexander-akait](https://github.com/alexander-akait) in [#21169](https://github.com/webpack/webpack/pull/21169))
  13. - Add a `deno` target (with versions, e.g. `deno`, `deno2`, `deno1.40`) that emits ESM, resolves node.js built-ins via the required `node:` specifier, and keeps Deno's own import protocols (`npm:`, `jsr:`, `node:`, `http(s)://`) external. (by [@alexander-akait](https://github.com/alexander-akait) in [#21247](https://github.com/webpack/webpack/pull/21247))
  14. - Use `module-import` for electron externals when the target supports ESM. (by [@alexander-akait](https://github.com/alexander-akait) in [#21184](https://github.com/webpack/webpack/pull/21184))
  15. - Add `output.environment.logicalAssignment` to emit `||=` in runtime code when the target supports logical assignment operators. (by [@bjohansebas](https://github.com/bjohansebas) in [#21219](https://github.com/webpack/webpack/pull/21219))
  16. - Resolve and rewrite asset URLs inside `<iframe srcdoc>` in HTML modules. (by [@bjohansebas](https://github.com/bjohansebas) in [#21226](https://github.com/webpack/webpack/pull/21226))
  17. - Add HMR support for HTML modules with body/title DOM patching on update. (by [@alexander-akait](https://github.com/alexander-akait) in [#21011](https://github.com/webpack/webpack/pull/21011))
  18. - Add `css-url` html source type extracting `url()` references from CSS-valued attributes. (by [@alexander-akait](https://github.com/alexander-akait) in [#21250](https://github.com/webpack/webpack/pull/21250))
  19. - Add `module.parser.html.sources` option to disable or customize URL-attribute extraction for HTML modules, with `script` / `script-module` / `stylesheet` / `stylesheet-inline` types for custom attributes (by [@alexander-akait](https://github.com/alexander-akait) in [#21022](https://github.com/webpack/webpack/pull/21022))
  20. - Add `module.parser.html.template` option to transform HTML module source before parsing. (by [@alexander-akait](https://github.com/alexander-akait) in [#21055](https://github.com/webpack/webpack/pull/21055))
  21. - Extract more source URLs in HTML modules (SVG, legacy and obsolete attributes). (by [@alexander-akait](https://github.com/alexander-akait) in [#21241](https://github.com/webpack/webpack/pull/21241))
  22. - Inline `export default <const>` when the default-exported value is a primitive constant. (by [@hai-x](https://github.com/hai-x) in [#21189](https://github.com/webpack/webpack/pull/21189))
  23. - Support `optimization.inlineExports` for better tree-shaking. (by [@hai-x](https://github.com/hai-x) in [#20973](https://github.com/webpack/webpack/pull/20973))
  24. - Re-encode inline hash digests (`[contenthash]`/`[chunkhash]`/`[fullhash]`/`[modulehash]`) from the full content hash, so they carry full entropy and work under `optimization.realContentHash` and in dynamically-loaded chunk filenames; also preserve leading zero bytes in base-N digests. (by [@alexander-akait](https://github.com/alexander-akait) in [#21267](https://github.com/webpack/webpack/pull/21267))
  25. - Allow tree-shaking unused calls to `/*#__NO_SIDE_EFFECTS__*/`-annotated (pure) exports across module boundaries. (by [@hai-x](https://github.com/hai-x) in [#20907](https://github.com/webpack/webpack/pull/20907))
  26. - Defer building unused re-export targets of side-effect-free barrel modules. (by [@hai-x](https://github.com/hai-x) in [#21165](https://github.com/webpack/webpack/pull/21165))
  27. - Keep export mangling enabled for modules whose namespace object is used as a whole value, by materializing a decoupled namespace object that keeps the original export names. (by [@alexander-akait](https://github.com/alexander-akait) in [#21234](https://github.com/webpack/webpack/pull/21234))
  28. - Add `output.environment.let` option (paired with target's `let` capability) and emit `let`/`const` instead of `var` in generated runtime code wherever it is safe. Bindings that may be wrapped in runtime-condition `if` blocks (harmony imports, ConcatenatedModule external imports) continue to use `var` to preserve function scoping. (by [@alexander-akait](https://github.com/alexander-akait) in [#21010](https://github.com/webpack/webpack/pull/21010))
  29. - Add `output.html` to emit an HTML file per entrypoint, injecting its JS/CSS chunks (including `dependOn` shared chunks). (by [@alexander-akait](https://github.com/alexander-akait) in [#21215](https://github.com/webpack/webpack/pull/21215))
  30. - Add `module.parser.javascript.pureFunctions` to mark top-level names as side-effect-free for tree shaking. (by [@hai-x](https://github.com/hai-x) in [#21063](https://github.com/webpack/webpack/pull/21063))
  31. - Add `universal` to `compiler.platform`, true for universal targets (`"universal"` or `["web", "node"]`). (by [@bjohansebas](https://github.com/bjohansebas) in [#21252](https://github.com/webpack/webpack/pull/21252))
  32. - Add `output.strictModuleResolution` to gate the runtime `MODULE_NOT_FOUND` guard. (by [@hai-x](https://github.com/hai-x) in [#21067](https://github.com/webpack/webpack/pull/21067))
  33. - Support an inline digest in hash path placeholders, e.g. `[contenthash:base64:8]`. (by [@alexander-akait](https://github.com/alexander-akait) in [#21259](https://github.com/webpack/webpack/pull/21259))
  34. - Support `[uniqueName]` and its `[uniquename]` alias in template paths. (by [@alexander-akait](https://github.com/alexander-akait) in [#21155](https://github.com/webpack/webpack/pull/21155))
  35. - Support CSS in Node for universal targets, collecting styles for SSR. (by [@alexander-akait](https://github.com/alexander-akait) in [#21208](https://github.com/webpack/webpack/pull/21208))
  36. - Improve commonjs, node-commonjs and global externals for universal targets. (by [@alexander-akait](https://github.com/alexander-akait) in [#21187](https://github.com/webpack/webpack/pull/21187))
  37. - Add a `universal` target preset (browser + web worker + Node.js + Electron + NW.js) that always outputs ECMAScript modules. (by [@alexander-akait](https://github.com/alexander-akait) in [#21214](https://github.com/webpack/webpack/pull/21214))
  38. - Support `new Worker(new URL(...))` in universal (node + web) targets by resolving the Worker constructor from `worker_threads` when no global `Worker` exists. (by [@alexander-akait](https://github.com/alexander-akait) in [#21195](https://github.com/webpack/webpack/pull/21195))
  39. - Add `output.workerChunkFilename` and `entry.worker` for worker chunk filenames. (by [@alexander-akait](https://github.com/alexander-akait) in [#21128](https://github.com/webpack/webpack/pull/21128))
  40. ### Patch Changes
  41. - Skip re-parsing the inlined entry module when no renaming is needed. (by [@alexander-akait](https://github.com/alexander-akait) in [#21167](https://github.com/webpack/webpack/pull/21167))
  42. - Extend the avoidEntryIife no-parse fast path to multi-entry chunks. (by [@alexander-akait](https://github.com/alexander-akait) in [#21173](https://github.com/webpack/webpack/pull/21173))
  43. - Reuse the binary deserialize dispatch table to speed up cache restore. (by [@alexander-akait](https://github.com/alexander-akait) in [#21175](https://github.com/webpack/webpack/pull/21175))
  44. - Type `buildInfo` and `buildMeta` per module type with shared common properties. (by [@alexander-akait](https://github.com/alexander-akait) in [#21172](https://github.com/webpack/webpack/pull/21172))
  45. - Avoid copying module runtime requirements when ownership is not transferred. (by [@alexander-akait](https://github.com/alexander-akait) in [#21140](https://github.com/webpack/webpack/pull/21140))
  46. - Keep all CommonJS exports when an exported function accesses them via `this`. (by [@alexander-akait](https://github.com/alexander-akait) in [#21179](https://github.com/webpack/webpack/pull/21179))
  47. - Align CLI color-support detection across Node, Deno and Bun. (by [@alexander-akait](https://github.com/alexander-akait) in [#21257](https://github.com/webpack/webpack/pull/21257))
  48. - Include the schema origin path in conflicting-schema CLI argument errors. (by [@alexander-akait](https://github.com/alexander-akait) in [#21087](https://github.com/webpack/webpack/pull/21087))
  49. - Reject `__proto__`, `constructor` and `prototype` path segments in `cli.processArguments` to prevent prototype pollution. (by [@alexander-akait](https://github.com/alexander-akait) in [#21057](https://github.com/webpack/webpack/pull/21057))
  50. - Speed up `Compilation.deleteAsset` and `Compilation.renameAsset` via a lazy reverse index from asset file name to containing chunks. (by [@alexander-akait](https://github.com/alexander-akait) in [#21035](https://github.com/webpack/webpack/pull/21035))
  51. - Fix merging of inner modules' top-level declarations in concatenated modules. (by [@alexander-akait](https://github.com/alexander-akait) in [#21170](https://github.com/webpack/webpack/pull/21170))
  52. - Reduce allocations in export hashing and concatenation name lookups. (by [@alexander-akait](https://github.com/alexander-akait) in [#21167](https://github.com/webpack/webpack/pull/21167))
  53. - Avoid toLowerCase allocations in CSS keyword comparisons. (by [@alexander-akait](https://github.com/alexander-akait) in [#21109](https://github.com/webpack/webpack/pull/21109))
  54. - Speed up CSS identifier escaping with a char-class lookup table. (by [@alexander-akait](https://github.com/alexander-akait) in [#21109](https://github.com/webpack/webpack/pull/21109))
  55. - Resolve `[fullhash]` in `url()` public paths for inlined CSS export types (`style`/`text`/`css-style-sheet`) at runtime. (by [@alexander-akait](https://github.com/alexander-akait) in [#21054](https://github.com/webpack/webpack/pull/21054))
  56. - Avoid quadratic line scan when building CSS module exports source maps. (by [@alexander-akait](https://github.com/alexander-akait) in [#21109](https://github.com/webpack/webpack/pull/21109))
  57. - Compute CSS comment source locations lazily. (by [@alexander-akait](https://github.com/alexander-akait) in [#21109](https://github.com/webpack/webpack/pull/21109))
  58. - Support inline hash digest and length in CSS module `localIdentName` placeholders. (by [@alexander-akait](https://github.com/alexander-akait) in [#21259](https://github.com/webpack/webpack/pull/21259))
  59. - Resolve full CSS escapes (including hex) in CSS-Modules names, so e.g. `\75 rl()` matches `url()`. (by [@alexander-akait](https://github.com/alexander-akait) in [#21196](https://github.com/webpack/webpack/pull/21196))
  60. - Reduce CSS parser CPU (hoisted per-call regexes, byte-compared `@container` pure-mode keywords) and stop retaining parsed comments on the reused parser instance between modules. (by [@alexander-akait](https://github.com/alexander-akait) in [#21202](https://github.com/webpack/webpack/pull/21202))
  61. - Reduce CSS build time and memory usage. Per-export CSS dependencies are consolidated into one dependency per module, and hot-path allocations and lookups in CSS code generation and the module-graph cache are trimmed. (by [@alexander-akait](https://github.com/alexander-akait) in [#21114](https://github.com/webpack/webpack/pull/21114))
  62. - Cache CSS public-path placeholder offsets per module source to avoid re-materializing and re-scanning the source on every render. (by [@alexander-akait](https://github.com/alexander-akait) in [#21054](https://github.com/webpack/webpack/pull/21054))
  63. - Fix CSS tokenizer infinite loops and dropped tokens on malformed input. (by [@alexander-akait](https://github.com/alexander-akait) in [#21102](https://github.com/webpack/webpack/pull/21102))
  64. - Speed up CSS identifier unescaping with bulk run flushing. (by [@alexander-akait](https://github.com/alexander-akait) in [#21109](https://github.com/webpack/webpack/pull/21109))
  65. - Skip already-visited symlink targets when resolving context hashes so cyclic symlink graphs no longer overflow the queue. (by [@alexander-akait](https://github.com/alexander-akait) in [#21088](https://github.com/webpack/webpack/pull/21088))
  66. - Resolve `DefinePlugin` access to an undefined object member as `undefined`. (by [@alexander-akait](https://github.com/alexander-akait) in [#21040](https://github.com/webpack/webpack/pull/21040))
  67. - Avoid materializing dependency source locations when sorting, keeping them lazy to reduce build time and memory. (by [@alexander-akait](https://github.com/alexander-akait) in [#21228](https://github.com/webpack/webpack/pull/21228))
  68. - Speed up serialization deserialize by replacing a Buffer.isBuffer call with a typeof check. (by [@hai-x](https://github.com/hai-x) in [#21203](https://github.com/webpack/webpack/pull/21203))
  69. - Emit assets with absolute target paths as-is to avoid invalid Windows paths. (by [@alexander-akait](https://github.com/alexander-akait) in [#21223](https://github.com/webpack/webpack/pull/21223))
  70. - Add `output.environment.spread`, `output.environment.hasOwn`, and `output.environment.symbol`, and use method shorthand, spread, `Object.hasOwn`, and an unguarded `Symbol` in generated runtime code where the environment supports it. (by [@alexander-akait](https://github.com/alexander-akait) in [#21188](https://github.com/webpack/webpack/pull/21188))
  71. - Drop the unused loadScript runtime from ESM hot-update bundles. (by [@alexander-akait](https://github.com/alexander-akait) in [#21208](https://github.com/webpack/webpack/pull/21208))
  72. - Extend value binding optimization to export default expressions. (by [@xiaoxiaojx](https://github.com/xiaoxiaojx) in [#21117](https://github.com/webpack/webpack/pull/21117))
  73. - Reduce ExportInfo memory and cache size for inline-exports metadata. (by [@alexander-akait](https://github.com/alexander-akait) in [#21171](https://github.com/webpack/webpack/pull/21171))
  74. - Resolve nested exports info paths iteratively to cut per-level array allocations. (by [@alexander-akait](https://github.com/alexander-akait) in [#21137](https://github.com/webpack/webpack/pull/21137))
  75. - Fix stale incremental cache for css, html and asset/source/inline modules. (by [@alexander-akait](https://github.com/alexander-akait) in [#21108](https://github.com/webpack/webpack/pull/21108))
  76. - CommonJS tree-shaking no longer drops exports accessed before a deferred require binding. (by [@xiaoxiaojx](https://github.com/xiaoxiaojx) in [#21123](https://github.com/webpack/webpack/pull/21123))
  77. - Make CSS-referenced asset available in lazy JS chunk during incremental rebuilds. (by [@alexander-akait](https://github.com/alexander-akait) in [#21100](https://github.com/webpack/webpack/pull/21100))
  78. - Correct string/template import specifier parsing for filesystem cache build dependencies and fix module-sharing hostname validation. (by [@alexander-akait](https://github.com/alexander-akait) in [#21232](https://github.com/webpack/webpack/pull/21232))
  79. - perf: guard isDeferred() behind experiments.deferImport in ConcatenatedModule (by [@shashank-u03](https://github.com/shashank-u03) in [#21096](https://github.com/webpack/webpack/pull/21096))
  80. - Speed up deterministicGrouping and cached comparators on large builds. (by [@alexander-akait](https://github.com/alexander-akait) in [#21197](https://github.com/webpack/webpack/pull/21197))
  81. - Reduce allocations on harmony/commonjs dependency hot paths. (by [@alexander-akait](https://github.com/alexander-akait) in [#21180](https://github.com/webpack/webpack/pull/21180))
  82. - Force-load a module's new owning chunk during HMR when its only loaded chunk is removed from a runtime, so it keeps receiving updates. (by [@alexander-akait](https://github.com/alexander-akait) in [#21131](https://github.com/webpack/webpack/pull/21131))
  83. - Fix HTML parser adoption agency to handle a `nobr` shielded by a marker. (by [@alexander-akait](https://github.com/alexander-akait) in [#21274](https://github.com/webpack/webpack/pull/21274))
  84. - Expand HTML parser tag/attribute coverage and decode character references. (by [@alexander-akait](https://github.com/alexander-akait) in [#21159](https://github.com/webpack/webpack/pull/21159))
  85. - Speed up and reduce allocations in the experimental HTML parser's tokenizer, tree builder, and entity decoder. (by [@alexander-akait](https://github.com/alexander-akait) in [#21152](https://github.com/webpack/webpack/pull/21152))
  86. - Speed up the experimental HTML parser and reduce its memory usage. (by [@alexander-akait](https://github.com/alexander-akait) in [#21130](https://github.com/webpack/webpack/pull/21130))
  87. - Avoid redundant HTML module work: reuse the dependency-template render across the JS and HTML code-generation passes, and memoize sentinel resolution/content hashing per source. (by [@alexander-akait](https://github.com/alexander-akait) in [#21054](https://github.com/webpack/webpack/pull/21054))
  88. - Release inner-graph state after use and speed up inlined-export checks. (by [@alexander-akait](https://github.com/alexander-akait) in [#21167](https://github.com/webpack/webpack/pull/21167))
  89. - Reduce JavascriptParser allocations on the walk hot path to speed up parsing and lower memory usage. (by [@alexander-akait](https://github.com/alexander-akait) in [#21139](https://github.com/webpack/webpack/pull/21139))
  90. - Reduce CPU and memory overhead of the lazy barrel optimization. (by [@alexander-akait](https://github.com/alexander-akait) in [#21213](https://github.com/webpack/webpack/pull/21213))
  91. - Keep the error message in module build errors on engines whose `Error.stack` omits it. (by [@alexander-akait](https://github.com/alexander-akait) in [#21239](https://github.com/webpack/webpack/pull/21239))
  92. - Speed up module concatenation by caching repeated per-module computations. (by [@alexander-akait](https://github.com/alexander-akait) in [#21115](https://github.com/webpack/webpack/pull/21115))
  93. - Move the `hot` flag from `Module` to `NormalModule`, where it's actually read and written. (by [@alexander-akait](https://github.com/alexander-akait) in [#21028](https://github.com/webpack/webpack/pull/21028))
  94. - Move the `weak` flag from `Dependency` to `ModuleDependency`, where it's actually set. (by [@alexander-akait](https://github.com/alexander-akait) in [#21111](https://github.com/webpack/webpack/pull/21111))
  95. - Avoid the entry IIFE for multiple inlined entry modules by renaming collisions. (by [@alexander-akait](https://github.com/alexander-akait) in [#21151](https://github.com/webpack/webpack/pull/21151))
  96. - Reject `new import.defer(...)`/`new import.source(...)` with member access as a SyntaxError. (by [@alexander-akait](https://github.com/alexander-akait) in [#21211](https://github.com/webpack/webpack/pull/21211))
  97. - Avoid `ProvidePlugin` injection for local CommonJS require bindings that use the same variable name. (by [@fireairforce](https://github.com/fireairforce) in [#21041](https://github.com/webpack/webpack/pull/21041))
  98. - Resolve the global `new Worker(new URL(...))` to `worker_threads` on the `node` target. (by [@alexander-akait](https://github.com/alexander-akait) in [#21217](https://github.com/webpack/webpack/pull/21217))
  99. - Use optional chaining in generated runtime code where the environment supports it. (by [@alexander-akait](https://github.com/alexander-akait) in [#21186](https://github.com/webpack/webpack/pull/21186))
  100. - Allow output.path to be the filesystem root by treating EISDIR like EEXIST in mkdirp. (by [@alexander-akait](https://github.com/alexander-akait) in [#21223](https://github.com/webpack/webpack/pull/21223))
  101. - Reduce memory by not retaining the source location object on every dependency. (by [@alexander-akait](https://github.com/alexander-akait) in [#21183](https://github.com/webpack/webpack/pull/21183))
  102. - Keep the full exports object when a `require()` binding is re-exported. (by [@alexander-akait](https://github.com/alexander-akait) in [#21144](https://github.com/webpack/webpack/pull/21144))
  103. - Replace glob-to-regexp dependency with watchpack's globToRegExp utility. (by [@hai-x](https://github.com/hai-x) in [#21176](https://github.com/webpack/webpack/pull/21176))
  104. - Shrink the persistent cache: add a NULL_AND_I16 binary tier and inline tiny strings instead of larger far back-references. (by [@hai-x](https://github.com/hai-x) in [#21210](https://github.com/webpack/webpack/pull/21210))
  105. - Type serializer read/write contexts with positional tuples and fix a ProvideSharedDependency version/request swap. (by [@alexander-akait](https://github.com/alexander-akait) in [#21201](https://github.com/webpack/webpack/pull/21201))
  106. - Speed up buildChunkGraph by deriving block modules from the first runtime. (by [@alexander-akait](https://github.com/alexander-akait) in [#21166](https://github.com/webpack/webpack/pull/21166))
  107. - Cache re-export target resolution in SideEffectsFlagPlugin for faster builds. (by [@alexander-akait](https://github.com/alexander-akait) in [#21085](https://github.com/webpack/webpack/pull/21085))
  108. - Skip pure single-star passthrough modules for `export *` re-exports. (by [@alexander-akait](https://github.com/alexander-akait) in [#21085](https://github.com/webpack/webpack/pull/21085))
  109. - Skip dependency error/warning reporting for unchanged modules on rebuilds. (by [@alexander-akait](https://github.com/alexander-akait) in [#21154](https://github.com/webpack/webpack/pull/21154))
  110. - Use value descriptors instead of getters for const export bindings. (by [@xiaoxiaojx](https://github.com/xiaoxiaojx) in [#21021](https://github.com/webpack/webpack/pull/21021))
  111. - Apply CSS hot updates on the Node side of a universal target. (by [@alexander-akait](https://github.com/alexander-akait) in [#21217](https://github.com/webpack/webpack/pull/21217))
  112. - Guard CSS `style` export-type injection so it no-ops when there is no `document`. (by [@alexander-akait](https://github.com/alexander-akait) in [#21193](https://github.com/webpack/webpack/pull/21193))
  113. - Avoid building warning stats objects when counting warnings without a filter. (by [@alexander-akait](https://github.com/alexander-akait) in [#21198](https://github.com/webpack/webpack/pull/21198))
  114. - Recognize forward-slash Windows absolute paths (e.g. C:/dir) consistently. (by [@alexander-akait](https://github.com/alexander-akait) in [#21223](https://github.com/webpack/webpack/pull/21223))

ver en githubimported 2026-09-28 vía npm