From 19ba714ea11d6e733cd46ed3ce6b851ddc972e5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Fri, 7 Jul 2023 13:07:13 +0900 Subject: [PATCH] fix(es/minifier): Don't drop unused properties of top-level vars (#7638) **Related issue:** - Closes #7635. --- crates/swc_ecma_minifier/src/compress/optimize/unused.rs | 4 ++++ .../projects/wmr/archive-1/chunks/index.bf24abaa/output.js | 1 + .../projects/wmr/archive-1/chunks/index.ddc4110d/output.js | 4 +++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/crates/swc_ecma_minifier/src/compress/optimize/unused.rs b/crates/swc_ecma_minifier/src/compress/optimize/unused.rs index 5a4fc5f3c0a..471840b5f45 100644 --- a/crates/swc_ecma_minifier/src/compress/optimize/unused.rs +++ b/crates/swc_ecma_minifier/src/compress/optimize/unused.rs @@ -835,6 +835,10 @@ impl Optimizer<'_> { return None; } + if self.ctx.top_level && !self.options.top_level() { + return None; + } + let name = v.name.as_ident()?; let obj = v.init.as_mut()?.as_mut_object()?; diff --git a/crates/swc_ecma_minifier/tests/fixture/projects/wmr/archive-1/chunks/index.bf24abaa/output.js b/crates/swc_ecma_minifier/tests/fixture/projects/wmr/archive-1/chunks/index.bf24abaa/output.js index 681b933a2c3..cc328c54e95 100644 --- a/crates/swc_ecma_minifier/tests/fixture/projects/wmr/archive-1/chunks/index.bf24abaa/output.js +++ b/crates/swc_ecma_minifier/tests/fixture/projects/wmr/archive-1/chunks/index.bf24abaa/output.js @@ -1,5 +1,6 @@ import { s as style, m } from "../index.f66dda46.js"; const process = { + browser: !0, env: { FOO: "bar", OVERRIDE: "11", diff --git a/crates/swc_ecma_minifier/tests/fixture/projects/wmr/archive-1/chunks/index.ddc4110d/output.js b/crates/swc_ecma_minifier/tests/fixture/projects/wmr/archive-1/chunks/index.ddc4110d/output.js index 06d6f41b420..df7ca9b29f7 100644 --- a/crates/swc_ecma_minifier/tests/fixture/projects/wmr/archive-1/chunks/index.ddc4110d/output.js +++ b/crates/swc_ecma_minifier/tests/fixture/projects/wmr/archive-1/chunks/index.ddc4110d/output.js @@ -1,5 +1,7 @@ import { s as style, y, m } from "../index.f66dda46.js"; -const styles = {}; +const styles = { + about: "about_migxty" +}; function About({ query, title }) { return y(()=>(console.log("Mounted About: ", title), ()=>{ console.log("Unmounting About: ", title);