Skip to content

fix(css): lightningcss minify failed when build.target: 'es6' - #21933

Merged
sapphi-red merged 1 commit into
vitejs:mainfrom
ilharp-contrib:fix-lightningcss-minify-es6
Mar 19, 2026
Merged

sapphi-red merged 1 commit into
vitejs:mainfrom
ilharp-contrib:fix-lightningcss-minify-es6

Conversation

@ilharp

@ilharp ilharp commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

Repro

Running the following commands:

npx -y create-vite@latest -t vanilla --no-interactive
cd vite-project
npm i
echo 'export default { build: { target: "es6" } }' > vite.config.js
npm run build

will produce the following output:

> vite-project@0.0.0 build
> vite build

vite v8.0.0 building client environment for production...
✓ 9 modules transformed.
✗ Build failed in 76ms
error during build:
Build failed with 1 error:

[plugin vite:css-post]
Error: [lightningcss minify] Unsupported target "es6"
    at convertTargets (file:///D:/a/vite-project/node_modules/vite/dist/node/chunks/node.js:21916:9)
    at minifyCSS (file:///D:/a/vite-project/node_modules/vite/dist/node/chunks/node.js:21172:13)
    at async finalizeCss (file:///D:/a/vite-project/node_modules/vite/dist/node/chunks/node.js:21016:36)
    at async Promise.all (index 1)
    at async Object.run (file:///D:/a/vite-project/node_modules/vite/dist/node/chunks/node.js:2437:22)
    at async PluginContextImpl.renderChunk (file:///D:/a/vite-project/node_modules/vite/dist/node/chunks/node.js:20555:19)
    at async plugin (file:///D:/a/vite-project/node_modules/rolldown/dist/shared/bindingify-input-options-Cu7pt6SZ.mjs:1211:16)
    at async plugin.<computed> (file:///D:/a/vite-project/node_modules/rolldown/dist/shared/bindingify-input-options-Cu7pt6SZ.mjs:1570:12)
    at aggregateBindingErrorsIntoJsError (file:///D:/a/vite-project/node_modules/rolldown/dist/shared/error-CP8smW_P.mjs:48:18)
    at unwrapBindingResult (file:///D:/a/vite-project/node_modules/rolldown/dist/shared/error-CP8smW_P.mjs:18:128)
    at #build (file:///D:/a/vite-project/node_modules/rolldown/dist/shared/rolldown-build-4YnQkA76.mjs:3311:34)
    at async buildEnvironment (file:///D:/a/vite-project/node_modules/vite/dist/node/chunks/node.js:32794:64)
    at async Object.build (file:///D:/a/vite-project/node_modules/vite/dist/node/chunks/node.js:33216:19)
    at async Object.buildApp (file:///D:/a/vite-project/node_modules/vite/dist/node/chunks/node.js:33213:153)
    at async CAC.<anonymous> (file:///D:/a/vite-project/node_modules/vite/dist/node/cli.js:778:3) {
  errors: [Getter/Setter]
}

This only occurs when config.build.target is es6. It will not occur with es2015.

The reason js bundling works correctly is that oxc specifically supports the string es6 along with es2015:

https://github.com/oxc-project/oxc/blob/c481b2fc7423cbeaff7cfbded4e569618e3e4bda/crates/oxc_syntax/src/es_target.rs#L31

  fn from_str(s: &str) -> Result<Self, Self::Err> {
      match s.cow_to_ascii_lowercase().as_ref() {
          "es5" => Err(String::from("ES5 is not yet supported.")),
+         "es6" | "es2015" => Ok(Self::ES2015),
          "es2016" => Ok(Self::ES2016),

Using target: 'es6', cssMinify: 'lightningcss' in vite 7 also produces the same error. And since cssMinify: 'lightningcss' is the default behavior in vite 8, to reduce migration regressions, I suggest supporting es6 as an alias of es2015 for the convertTargets() method of plugin css.

This patch can also be safely backported to vite 7.

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat: css p2-edge-case Bug, but has workaround or limited in scope (priority)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Sponsor
SponsoredKunjungi sekarang
Promo