Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ enhanced-resolve (5.20.1 → 5.21.0) · [Repo](https://github.com/webpack/enhanced-resolve) · [Changelog](https://github.com/webpack/enhanced-resolve/blob/main/CHANGELOG.md) <details> <summary>Release Notes</summary> <h4><a href="https://github.com/webpack/enhanced-resolve/releases/tag/v5.21.0">5.21.0</a></h4> <blockquote><h3 dir="auto">Minor Changes</h3> <ul dir="auto"> <li> <p dir="auto">Added promise API and support to resolve without <code class="notranslate">context</code> and <code class="notranslate">resolveContext</code>. (by <a href="https://bounce.depfu.com/github.com/alexander-akait">@alexander-akait</a> in <a href="https://bounce.depfu.com/github.com/webpack/enhanced-resolve/pull/520">#520</a>)</p> </li> <li> <p dir="auto">Add <code class="notranslate">extensionAliasForExports</code> option. When <code class="notranslate">true</code>, <code class="notranslate">extensionAlias</code> also applies to paths resolved through the <code class="notranslate">package.json</code> <code class="notranslate">exports</code> field. Off by default to match Node.js; opt in for full TypeScript-resolver parity with packages that ship <code class="notranslate">.ts</code> sources alongside the compiled <code class="notranslate">.js</code> they declare in <code class="notranslate">exports</code>. (by <a href="https://bounce.depfu.com/github.com/alexander-akait">@alexander-akait</a> in <a href="https://bounce.depfu.com/github.com/webpack/enhanced-resolve/pull/554">#554</a>)</p> </li> </ul> <h3 dir="auto">Patch Changes</h3> <ul dir="auto"> <li> <p dir="auto">Properly handle DOS device paths (<code class="notranslate">\\?\…</code> and <code class="notranslate">\\.\…</code>). (by <a href="https://bounce.depfu.com/github.com/alexander-akait">@alexander-akait</a> in <a href="https://bounce.depfu.com/github.com/webpack/enhanced-resolve/pull/551">#551</a>)</p> </li> <li> <p dir="auto">Prevent fallback to parent node_modules when the <code class="notranslate">exports</code> field target file is not found. (by <a href="https://bounce.depfu.com/github.com/xiaoxiaojx">@xiaoxiaojx</a> in <a href="https://bounce.depfu.com/github.com/webpack/enhanced-resolve/pull/495">#495</a>)</p> </li> <li> <p dir="auto">Imports field spec deviation: non-relative targets (e.g. <code class="notranslate">"#a": "#b"</code>) no longer re-enter imports resolution, aligning with the Node.js ESM spec where <code class="notranslate">PACKAGE_IMPORTS_RESOLVE</code> does not recursively resolve <code class="notranslate">#</code> specifiers. (by <a href="https://bounce.depfu.com/github.com/xiaoxiaojx">@xiaoxiaojx</a> in <a href="https://bounce.depfu.com/github.com/webpack/enhanced-resolve/pull/503">#503</a>)</p> <p dir="auto">Previously <code class="notranslate">{ "#a": "#b", "#b": "./the.js" }</code> would chain-resolve <code class="notranslate">#a</code> to <code class="notranslate">./the.js</code>; now it correctly fails, matching Node.js behavior.</p> </li> <li> <p dir="auto">Move <code class="notranslate">cachedJoin</code>/<code class="notranslate">cachedDirname</code>/<code class="notranslate">createCachedBasename</code> caches from module-level globals to per-Resolver instances. This prevents unbounded memory growth in long-running processes — when a Resolver is garbage collected, its join/dirname/basename caches are released with it. (by <a href="https://bounce.depfu.com/github.com/xiaoxiaojx">@xiaoxiaojx</a> in <a href="https://bounce.depfu.com/github.com/webpack/enhanced-resolve/pull/507">#507</a>)</p> </li> <li> <p dir="auto">Fixed when <code class="notranslate">tsconfig: true</code> is used (default config file) and no <code class="notranslate">tsconfig.json</code> exists. (by <a href="https://bounce.depfu.com/github.com/xiaoxiaojx">@xiaoxiaojx</a> in <a href="https://bounce.depfu.com/github.com/webpack/enhanced-resolve/pull/502">#502</a>)</p> </li> <li> <p dir="auto">Apply the <code class="notranslate">extensionAlias</code> option to the <code class="notranslate">imports</code> field to be align with typescript resolution. (by <a href="https://bounce.depfu.com/github.com/alexander-akait">@alexander-akait</a> in <a href="https://bounce.depfu.com/github.com/webpack/enhanced-resolve/pull/549">#549</a>)</p> </li> <li> <p dir="auto">Improved performance of the many plugins. (by <a href="https://bounce.depfu.com/github.com/alexander-akait">@alexander-akait</a> in <a href="https://bounce.depfu.com/github.com/webpack/enhanced-resolve/pull/529">#529</a>)</p> </li> <li> <p dir="auto">Replace the <code class="notranslate">Set<string></code>-based resolver stack with a singly-linked <code class="notranslate">StackEntry</code> class that exposes a Set-compatible API. (by <a href="https://bounce.depfu.com/github.com/xiaoxiaojx">@xiaoxiaojx</a> in <a href="https://bounce.depfu.com/github.com/webpack/enhanced-resolve/pull/526">#526</a>)</p> <p dir="auto">Each <code class="notranslate">doResolve</code> call now prepends a single linked-list node instead of cloning the entire Set, making stack push O(1) in time and memory. Recursion detection walks the linked list (O(n)), but because the stack is typically shallow this is much cheaper than cloning a Set per call.</p> </li> <li> <p dir="auto">Cache the result of <code class="notranslate">stripJsonComments</code> + <code class="notranslate">JSON.parse</code> in <code class="notranslate">readJson</code> using a <code class="notranslate">WeakMap</code> keyed by the raw file buffer. This avoids redundant comment-stripping and JSON parsing on every resolve call that reads tsconfig.json files (via <code class="notranslate">stripComments: true</code>), improving TsconfigPathsPlugin warm performance by ~20-35% depending on the depth of the <code class="notranslate">extends</code> chain. (by <a href="https://bounce.depfu.com/github.com/xiaoxiaojx">@xiaoxiaojx</a> in <a href="https://bounce.depfu.com/github.com/webpack/enhanced-resolve/pull/524">#524</a>)</p> </li> <li> <p dir="auto">Avoid OOM in CachedInputFileSystem when duration is Infinity. (by <a href="https://bounce.depfu.com/github.com/alexander-akait">@alexander-akait</a> in <a href="https://bounce.depfu.com/github.com/webpack/enhanced-resolve/pull/527">#527</a>)</p> </li> </ul></blockquote> <p><em>Does any of this look wrong? <a href=" |
||
|---|---|---|
| .. | ||
| src | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| tsup.config.ts | ||
A utility-first CSS framework for rapidly building custom user interfaces.
Documentation
For full documentation, visit tailwindcss.com.
Community
For help, discussion about best practices, or feature ideas:
Discuss Tailwind CSS on GitHub
Contributing
If you're interested in contributing to Tailwind CSS, please read our contributing docs before submitting a pull request.