Skip to content

v0.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Jun 19:21
  • output.library/libraryTarget — previously dropped without a word — now emits a real build.lib block (entry from the detected webpack entry, name, and formats mapped from umdumd, modulees, commonjs*cjs, var/window/…→iife) with a verify warning. Unknown library types fall back to a manual warning.
  • Unknown keys inside resolve, output, and module (e.g. resolve.mainFields, output.assetModuleFilename, module.noParse) now emit named resolve.unmapped/output.unmapped/module.unmapped warnings instead of being dropped in silence — the systemic fix for the audit's silent-drop bug class. resolve.symlinks points at Vite's inverse preserveSymlinks; benign keys (output.pathinfo, module.strictExportPresence, …) report as info.
  • Static sass-loader/less-loader/stylus-loader options (additionalData, prependData, flattened sassOptions/lessOptions/stylusOptions) are now emitted as a css.preprocessorOptions.<lang> block instead of only a warning telling you to move them. implementation/sourceMap-style webpack-only options are dropped.
  • entry: path.resolve(__dirname, 'src/index.js') (and path.resolve values inside object/array entries) is now statically evaluated and mapped instead of falling to the manual entry.dynamic warning.
  • HtmlWebpackPlugin now produces a ready-to-paste index.html skeleton (module script tag pointing at the detected entry; title/favicon/template read statically). It is returned as result.indexHtml and written next to the config by --apply when no index.html exists.
  • devServer.static/contentBase with a static string or { directory } value now emits publicDir directly instead of only describing the mapping.
  • New real-project fixture suite (tests/real-fixtures.test.ts): ejected CRA, vue-cli base, webpack 5 asset modules, a UMD library build, and a webpack-merge prod config, each snapshotting the full rendered output, the migration report, and the dependency checklist.
  • CLI: new --deps flag (with --apply) opts in to updating package.json — it adds the required dependencies from the checklist to devDependencies and never removes anything. Without --deps, package.json is untouched as before. This resolves the documented asymmetry with @shiftkit/jest-to-vitest --apply.
  • Section values are no longer dropped silently. plugins: [...].filter(Boolean) and [...].concat(cond ? [...] : []) are unwrapped to the underlying array literal, conditional plugin elements (cond && new X(), ternaries) are classified on both branches, and any plugins/output/resolve/module/devServer/optimization value that cannot be read statically now emits a manual config.dynamic warning instead of nothing. Previously a config using these idioms converted to an empty skeleton rated "High confidence".
  • webpack 5 asset modules (type: 'asset/resource' etc.) are now recognized: asset/resource and asset report as natively handled (info), asset/inline and asset/source flag the ?inline/?raw import-shape changes (verify). Previously these rules were invisible.
  • resolve.fallback now sets needsNodePolyfills, emits a manual resolve.fallback warning, and suggests vite-plugin-node-polyfills. Previously a Node-polyfill config converted to an empty skeleton with no warnings.
  • Exact-match aliases containing / (e.g. '@app/core$') no longer render a syntactically invalid regex literal; slashes are escaped in the generated find pattern.
  • devServer.https/devServer.server mapping rewritten: boolean https: true is no longer emitted (Vite's server.https takes https.createServer() options; @vitejs/plugin-basic-ssl is suggested instead, new devServer.https code), cert-option objects are copied through, and server: 'http' is dropped instead of being converted into an HTTPS dev server.
  • output.path keeps nested directories (build/static) instead of only the last segment; absolute paths fall back to the last segment with a verify warning.
  • Array entries now use the last element as the build input (webpack exports the last; earlier ones are usually polyfills). Previously the first element was used.
  • vue-loader/VueLoaderPlugin (and svelte-loader) are classified as replaced by the framework plugin the analyzer already wires in, instead of producing contradictory manual warnings on every standard Vue config.
  • Multi-config arrays now emit config.multiConfig instead of the mis-tagged config.functionForm.
  • CLI: absolute file paths work for the positional argument and --out (previously mangled by join(cwd, ...)).