diff --git a/crates/oxc_minifier/src/ast_passes/peephole_substitute_alternate_syntax.rs b/crates/oxc_minifier/src/ast_passes/peephole_substitute_alternate_syntax.rs index 9543cc924598c7..700102da0e3f0e 100644 --- a/crates/oxc_minifier/src/ast_passes/peephole_substitute_alternate_syntax.rs +++ b/crates/oxc_minifier/src/ast_passes/peephole_substitute_alternate_syntax.rs @@ -108,15 +108,20 @@ impl<'a> Traverse<'a> for PeepholeSubstituteAlternateSyntax { call_expr: &mut CallExpression<'a>, ctx: &mut TraverseCtx<'a>, ) { - if ctx.parent().is_expression_statement() - && Self::is_object_define_property_exports(call_expr) - { - self.in_define_export = true; + if !self.in_fixed_loop { + let parent = ctx.parent(); + if (parent.is_expression_statement() || parent.is_sequence_expression()) + && Self::is_object_define_property_exports(call_expr) + { + self.in_define_export = true; + } } } fn exit_call_expression(&mut self, expr: &mut CallExpression<'a>, ctx: &mut TraverseCtx<'a>) { - self.in_define_export = false; + if !self.in_fixed_loop { + self.in_define_export = false; + } self.try_compress_call_expression_arguments(expr, ctx); } diff --git a/crates/oxc_minifier/tests/ast_passes/mod.rs b/crates/oxc_minifier/tests/ast_passes/mod.rs index c58a2ecfc4f9c4..f0d68f3529e739 100644 --- a/crates/oxc_minifier/tests/ast_passes/mod.rs +++ b/crates/oxc_minifier/tests/ast_passes/mod.rs @@ -61,7 +61,35 @@ fn cjs() { } });", ); + test_same( + "Object.defineProperty(exports, 'ConnectableObservable', { + enumerable: true, + get: function() { + return ConnectableObservable_1.ConnectableObservable; + } + });", + ); // @babel/types/lib/index.js + test( + r#" + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "TargetNames", { + enumerable: true, + get: function () { + return _options.TargetNames; + } + });"#, + r#" + Object.defineProperty(exports, "__esModule", { value: true }), Object.defineProperty(exports, "TargetNames", { + enumerable: true, + get: function() { + return _options.TargetNames; + } + });"#, + ); + test( r#"Object.keys(_index6).forEach(function(key) { if (key === "default" || key === "__esModule") return; diff --git a/tasks/minsize/minsize.snap b/tasks/minsize/minsize.snap index d3a178e7d2b3f2..484dfaefbdf5f2 100644 --- a/tasks/minsize/minsize.snap +++ b/tasks/minsize/minsize.snap @@ -11,15 +11,15 @@ Original | minified | minified | gzip | gzip | Fixture 544.10 kB | 71.76 kB | 72.48 kB | 26.15 kB | 26.20 kB | lodash.js -555.77 kB | 273.21 kB | 270.13 kB | 90.92 kB | 90.80 kB | d3.js +555.77 kB | 273.21 kB | 270.13 kB | 90.93 kB | 90.80 kB | d3.js 1.01 MB | 460.18 kB | 458.89 kB | 126.77 kB | 126.71 kB | bundle.min.js -1.25 MB | 652.85 kB | 646.76 kB | 163.54 kB | 163.73 kB | three.js +1.25 MB | 652.86 kB | 646.76 kB | 163.54 kB | 163.73 kB | three.js -2.14 MB | 726.27 kB | 724.14 kB | 180.09 kB | 181.07 kB | victory.js +2.14 MB | 726.27 kB | 724.14 kB | 180.08 kB | 181.07 kB | victory.js -3.20 MB | 1.01 MB | 1.01 MB | 331.78 kB | 331.56 kB | echarts.js +3.20 MB | 1.01 MB | 1.01 MB | 331.79 kB | 331.56 kB | echarts.js 6.69 MB | 2.32 MB | 2.31 MB | 492.64 kB | 488.28 kB | antd.js diff --git a/tasks/minsize/src/lib.rs b/tasks/minsize/src/lib.rs index 2a354e7e457e6c..516e503c813fcc 100644 --- a/tasks/minsize/src/lib.rs +++ b/tasks/minsize/src/lib.rs @@ -98,7 +98,6 @@ pub fn run() -> Result<(), io::Error> { let save_path = Path::new("./target/minifier").join(marker); for file in files.files() { - println!("{}", &file.file_name); let minified = minify_twice(file); fs::create_dir_all(&save_path).unwrap();