Skip to content

Commit

Permalink
fix(es): Accept parse option for minify() (#7543)
Browse files Browse the repository at this point in the history
**Description:**

We don't support them. but this is to make API more compatible with `terser`.

**Related issue:**

 - Closes #7455.
  • Loading branch information
kdy1 committed Jun 19, 2023
1 parent 44aac8f commit 1d84e95
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 28 deletions.
7 changes: 1 addition & 6 deletions crates/swc/benches/minify.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,12 @@ fn bench_minify(b: &mut Bencher, filename: &str) {
&JsMinifyOptions {
compress: BoolOrDataConfig::from_bool(true),
mangle: BoolOrDataConfig::from_bool(true),
format: Default::default(),
ecma: Default::default(),
keep_classnames: Default::default(),
keep_fnames: Default::default(),
module: Default::default(),
safari10: Default::default(),
toplevel: true,
source_map: BoolOrDataConfig::from_bool(true),
output_path: Default::default(),
inline_sources_content: true,
emit_source_map_columns: true,
..Default::default()
},
)
})
Expand Down
12 changes: 1 addition & 11 deletions crates/swc/examples/minify.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,7 @@ fn main() {
&JsMinifyOptions {
compress: BoolOrDataConfig::from_bool(true),
mangle: BoolOrDataConfig::from_bool(true),
format: Default::default(),
ecma: Default::default(),
keep_classnames: Default::default(),
keep_fnames: Default::default(),
module: Default::default(),
safari10: Default::default(),
toplevel: Default::default(),
source_map: Default::default(),
output_path: Default::default(),
inline_sources_content: Default::default(),
emit_source_map_columns: Default::default(),
..Default::default()
},
)
.context("failed to minify")
Expand Down
26 changes: 26 additions & 0 deletions crates/swc/src/config/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1042,6 +1042,9 @@ pub struct Config {
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(deny_unknown_fields, rename_all = "camelCase")]
pub struct JsMinifyOptions {
#[serde(default)]
pub parse: JsMinifyParseOptions,

#[serde(default)]
pub compress: BoolOrDataConfig<TerserCompressorOptions>,

Expand Down Expand Up @@ -1103,6 +1106,29 @@ pub struct TerserSourceMapOption {
pub content: Option<String>,
}

/// Parser options for `minify()`, which should have the same API as terser.
///
/// `jsc.minify.parse` is ignored.
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields, rename_all = "camelCase")]
pub struct JsMinifyParseOptions {
/// Not supported.
#[serde(default, alias = "bare_returns")]
pub bare_returns: bool,

/// Ignored, and always parsed.
#[serde(default = "true_by_default", alias = "html5_comments")]
pub html5_comments: bool,

/// Ignored, and always parsed.
#[serde(default = "true_by_default")]
pub shebang: bool,

/// Not supported.
#[serde(default)]
pub spidermonkey: bool,
}

/// `jsc.minify.format`.
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields, rename_all = "camelCase")]
Expand Down
12 changes: 1 addition & 11 deletions crates/swc/tests/exec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -186,17 +186,7 @@ fn create_matrix(entry: &Path) -> Vec<Options> {
Some(JsMinifyOptions {
compress: BoolOrDataConfig::from_bool(true),
mangle: BoolOrDataConfig::from_bool(true),
format: Default::default(),
ecma: Default::default(),
keep_classnames: Default::default(),
keep_fnames: Default::default(),
module: Default::default(),
safari10: Default::default(),
toplevel: Default::default(),
source_map: Default::default(),
output_path: Default::default(),
inline_sources_content: Default::default(),
emit_source_map_columns: Default::default(),
..Default::default()
})
} else {
None
Expand Down

1 comment on commit 1d84e95

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: 1d84e95 Previous: aa82e5f Ratio
es/full/bugs-1 356857 ns/iter (± 3432) 363079 ns/iter (± 11814) 0.98
es/full/minify/libraries/antd 1837113840 ns/iter (± 27369611) 1993656963 ns/iter (± 28957343) 0.92
es/full/minify/libraries/d3 369359651 ns/iter (± 7568330) 418864620 ns/iter (± 4370522) 0.88
es/full/minify/libraries/echarts 1428024744 ns/iter (± 17208784) 1558923692 ns/iter (± 9646271) 0.92
es/full/minify/libraries/jquery 108924772 ns/iter (± 1020225) 122014677 ns/iter (± 2470425) 0.89
es/full/minify/libraries/lodash 131894460 ns/iter (± 1589919) 143914526 ns/iter (± 1362583) 0.92
es/full/minify/libraries/moment 63784925 ns/iter (± 692088) 67763219 ns/iter (± 665844) 0.94
es/full/minify/libraries/react 22790601 ns/iter (± 162608) 23768987 ns/iter (± 973411) 0.96
es/full/minify/libraries/terser 290696643 ns/iter (± 3177421) 329282889 ns/iter (± 7284627) 0.88
es/full/minify/libraries/three 520390420 ns/iter (± 10863362) 590700177 ns/iter (± 3474828) 0.88
es/full/minify/libraries/typescript 3535194998 ns/iter (± 18570781) 3715218782 ns/iter (± 15954074) 0.95
es/full/minify/libraries/victory 765750333 ns/iter (± 11984182) 866099095 ns/iter (± 7137192) 0.88
es/full/minify/libraries/vue 157158877 ns/iter (± 1407612) 175543457 ns/iter (± 1889732) 0.90
es/full/codegen/es3 41128 ns/iter (± 164) 41027 ns/iter (± 113) 1.00
es/full/codegen/es5 40871 ns/iter (± 150) 41108 ns/iter (± 70) 0.99
es/full/codegen/es2015 40798 ns/iter (± 177) 41120 ns/iter (± 74) 0.99
es/full/codegen/es2016 40839 ns/iter (± 353) 41117 ns/iter (± 61) 0.99
es/full/codegen/es2017 40802 ns/iter (± 373) 41100 ns/iter (± 84) 0.99
es/full/codegen/es2018 40643 ns/iter (± 176) 41158 ns/iter (± 316) 0.99
es/full/codegen/es2019 40739 ns/iter (± 169) 41160 ns/iter (± 101) 0.99
es/full/codegen/es2020 40805 ns/iter (± 252) 41123 ns/iter (± 54) 0.99
es/full/all/es3 207068009 ns/iter (± 3206526) 209837249 ns/iter (± 2275763) 0.99
es/full/all/es5 199034013 ns/iter (± 2221916) 201769917 ns/iter (± 4239686) 0.99
es/full/all/es2015 156041621 ns/iter (± 2281307) 156905555 ns/iter (± 2033357) 0.99
es/full/all/es2016 155908287 ns/iter (± 2257970) 155194189 ns/iter (± 2357830) 1.00
es/full/all/es2017 153099241 ns/iter (± 2089028) 152967344 ns/iter (± 2289956) 1.00
es/full/all/es2018 153228172 ns/iter (± 2803311) 152957551 ns/iter (± 2679832) 1.00
es/full/all/es2019 153204241 ns/iter (± 1569552) 151950449 ns/iter (± 1906579) 1.01
es/full/all/es2020 148584363 ns/iter (± 3010187) 147089435 ns/iter (± 2555020) 1.01
es/full/parser 602750 ns/iter (± 10851) 617873 ns/iter (± 12163) 0.98
es/full/base/fixer 24484 ns/iter (± 200) 25992 ns/iter (± 54) 0.94
es/full/base/resolver_and_hygiene 105033 ns/iter (± 924) 105854 ns/iter (± 113) 0.99
serialization of serde 253 ns/iter (± 1) 257 ns/iter (± 0) 0.98
css/minify/libraries/bootstrap 35517362 ns/iter (± 218264) 37900624 ns/iter (± 348865) 0.94
css/visitor/compare/clone 2323833 ns/iter (± 9263) 2391968 ns/iter (± 29790) 0.97
css/visitor/compare/visit_mut_span 2525709 ns/iter (± 16097) 2561206 ns/iter (± 17164) 0.99
css/visitor/compare/visit_mut_span_panic 2568282 ns/iter (± 10665) 2666603 ns/iter (± 31425) 0.96
css/visitor/compare/fold_span 3292790 ns/iter (± 20928) 3361886 ns/iter (± 13851) 0.98
css/visitor/compare/fold_span_panic 3488853 ns/iter (± 17749) 3510011 ns/iter (± 27808) 0.99
css/lexer/bootstrap_5_1_3 5551428 ns/iter (± 35729) 5569410 ns/iter (± 2390) 1.00
css/lexer/foundation_6_7_4 4661031 ns/iter (± 15478) 4697432 ns/iter (± 2187) 0.99
css/lexer/tailwind_3_1_1 890071 ns/iter (± 5755) 893433 ns/iter (± 615) 1.00
css/parser/bootstrap_5_1_3 23470279 ns/iter (± 187129) 24910884 ns/iter (± 69833) 0.94
css/parser/foundation_6_7_4 18834595 ns/iter (± 66544) 19864740 ns/iter (± 31921) 0.95
css/parser/tailwind_3_1_1 3671677 ns/iter (± 25474) 3707647 ns/iter (± 5239) 0.99
es/codegen/colors 743879 ns/iter (± 405698) 729009 ns/iter (± 395773) 1.02
es/codegen/large 2967048 ns/iter (± 1562906) 3085019 ns/iter (± 1616339) 0.96
es/codegen/with-parser/colors 57878 ns/iter (± 525) 57273 ns/iter (± 457) 1.01
es/codegen/with-parser/large 573555 ns/iter (± 3374) 581774 ns/iter (± 804) 0.99
es/minify/libraries/antd 1620275868 ns/iter (± 28167550) 1738357525 ns/iter (± 15719100) 0.93
es/minify/libraries/d3 320919929 ns/iter (± 3936325) 365094083 ns/iter (± 2844927) 0.88
es/minify/libraries/echarts 1224595595 ns/iter (± 11640190) 1354852938 ns/iter (± 7147202) 0.90
es/minify/libraries/jquery 96200702 ns/iter (± 984628) 102568371 ns/iter (± 1199553) 0.94
es/minify/libraries/lodash 119453394 ns/iter (± 829681) 130014074 ns/iter (± 2072571) 0.92
es/minify/libraries/moment 56021991 ns/iter (± 408472) 60029905 ns/iter (± 950276) 0.93
es/minify/libraries/react 20341555 ns/iter (± 108463) 21403027 ns/iter (± 213954) 0.95
es/minify/libraries/terser 245807711 ns/iter (± 2150325) 279274226 ns/iter (± 5230245) 0.88
es/minify/libraries/three 431232939 ns/iter (± 5584589) 510535864 ns/iter (± 6628454) 0.84
es/minify/libraries/typescript 3056964705 ns/iter (± 18821035) 3202044049 ns/iter (± 8948284) 0.95
es/minify/libraries/victory 646645912 ns/iter (± 18675092) 762551680 ns/iter (± 7137991) 0.85
es/minify/libraries/vue 141753960 ns/iter (± 944021) 160079214 ns/iter (± 3254365) 0.89
es/visitor/compare/clone 2391524 ns/iter (± 10326) 2492561 ns/iter (± 40440) 0.96
es/visitor/compare/visit_mut_span 2774348 ns/iter (± 22154) 2922430 ns/iter (± 50669) 0.95
es/visitor/compare/visit_mut_span_panic 2815073 ns/iter (± 14987) 2927353 ns/iter (± 49521) 0.96
es/visitor/compare/fold_span 3855159 ns/iter (± 15486) 4045796 ns/iter (± 108339) 0.95
es/visitor/compare/fold_span_panic 4005642 ns/iter (± 18328) 4275170 ns/iter (± 59060) 0.94
es/lexer/colors 14834 ns/iter (± 106) 15197 ns/iter (± 28) 0.98
es/lexer/angular 7069796 ns/iter (± 35138) 7176985 ns/iter (± 5115) 0.99
es/lexer/backbone 858574 ns/iter (± 3831) 873062 ns/iter (± 518) 0.98
es/lexer/jquery 4825378 ns/iter (± 15355) 4886952 ns/iter (± 5851) 0.99
es/lexer/jquery mobile 7447997 ns/iter (± 26186) 7553183 ns/iter (± 3204) 0.99
es/lexer/mootools 3757861 ns/iter (± 30259) 3805778 ns/iter (± 33213) 0.99
es/lexer/underscore 709292 ns/iter (± 2970) 721228 ns/iter (± 433) 0.98
es/lexer/three 22454613 ns/iter (± 119531) 22706363 ns/iter (± 18915) 0.99
es/lexer/yui 4295489 ns/iter (± 22243) 4358937 ns/iter (± 2416) 0.99
es/parser/colors 32838 ns/iter (± 286) 33780 ns/iter (± 87) 0.97
es/parser/angular 16429296 ns/iter (± 94761) 18232739 ns/iter (± 243538) 0.90
es/parser/backbone 2412627 ns/iter (± 11737) 2430981 ns/iter (± 14474) 0.99
es/parser/jquery 13012150 ns/iter (± 106851) 14326342 ns/iter (± 364724) 0.91
es/parser/jquery mobile 20341260 ns/iter (± 392679) 22390532 ns/iter (± 213884) 0.91
es/parser/mootools 9939745 ns/iter (± 60140) 10363790 ns/iter (± 130004) 0.96
es/parser/underscore 2076810 ns/iter (± 11352) 2067037 ns/iter (± 12449) 1.00
es/parser/three 59986076 ns/iter (± 961466) 62815045 ns/iter (± 286679) 0.95
es/parser/yui 10147313 ns/iter (± 66920) 10733247 ns/iter (± 161364) 0.95
es/preset-env/usage/builtin_type 153718 ns/iter (± 34489) 151658 ns/iter (± 32946) 1.01
es/preset-env/usage/property 28626 ns/iter (± 174) 28716 ns/iter (± 55) 1.00
es/resolver/typescript 127330260 ns/iter (± 3018613) 126492543 ns/iter (± 3930180) 1.01
es/fixer/typescript 85642555 ns/iter (± 889456) 86992950 ns/iter (± 1882147) 0.98
es/hygiene/typescript 200386775 ns/iter (± 1631017) 198752828 ns/iter (± 3091498) 1.01
es/resolver_with_hygiene/typescript 406926444 ns/iter (± 5757775) 413631572 ns/iter (± 1685474) 0.98
es/visitor/base-perf/module_clone 85819 ns/iter (± 335) 86305 ns/iter (± 409) 0.99
es/visitor/base-perf/fold_empty 94226 ns/iter (± 801) 95364 ns/iter (± 488) 0.99
es/visitor/base-perf/fold_noop_impl_all 94786 ns/iter (± 634) 95762 ns/iter (± 181) 0.99
es/visitor/base-perf/fold_noop_impl_vec 95255 ns/iter (± 987) 95809 ns/iter (± 490) 0.99
es/visitor/base-perf/boxing_boxed_clone 60 ns/iter (± 0) 63 ns/iter (± 0) 0.95
es/visitor/base-perf/boxing_unboxed_clone 45 ns/iter (± 0) 44 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_boxed 116 ns/iter (± 0) 105 ns/iter (± 0) 1.10
es/visitor/base-perf/boxing_unboxed 82 ns/iter (± 0) 81 ns/iter (± 0) 1.01
es/visitor/base-perf/visit_contains_this 3425 ns/iter (± 86) 3636 ns/iter (± 73) 0.94
es/base/parallel/resolver/typescript 7589534208 ns/iter (± 588349400) 7181712193 ns/iter (± 444160655) 1.06
es/base/parallel/hygiene/typescript 2402401567 ns/iter (± 20420676) 2212843237 ns/iter (± 31839549) 1.09
misc/visitors/time-complexity/time 5 104 ns/iter (± 0) 106 ns/iter (± 0) 0.98
misc/visitors/time-complexity/time 10 351 ns/iter (± 0) 343 ns/iter (± 5) 1.02
misc/visitors/time-complexity/time 15 679 ns/iter (± 10) 689 ns/iter (± 1) 0.99
misc/visitors/time-complexity/time 20 1246 ns/iter (± 1) 1268 ns/iter (± 9) 0.98
misc/visitors/time-complexity/time 40 6274 ns/iter (± 2) 6867 ns/iter (± 32) 0.91
misc/visitors/time-complexity/time 60 15816 ns/iter (± 49) 17560 ns/iter (± 76) 0.90
es/full-target/es2016 272260 ns/iter (± 615) 271467 ns/iter (± 423) 1.00
es/full-target/es2017 261596 ns/iter (± 685) 262077 ns/iter (± 621) 1.00
es/full-target/es2018 250372 ns/iter (± 383) 250332 ns/iter (± 568) 1.00
es2020_nullish_coalescing 99194 ns/iter (± 458) 99345 ns/iter (± 370) 1.00
es2020_optional_chaining 88700 ns/iter (± 280) 88924 ns/iter (± 267) 1.00
es2022_class_properties 158329 ns/iter (± 470) 157790 ns/iter (± 263) 1.00
es2018_object_rest_spread 101159 ns/iter (± 226) 100500 ns/iter (± 119) 1.01
es2019_optional_catch_binding 88942 ns/iter (± 497) 89159 ns/iter (± 252) 1.00
es2017_async_to_generator 89777 ns/iter (± 171) 90044 ns/iter (± 235) 1.00
es2016_exponentiation 96665 ns/iter (± 273) 95824 ns/iter (± 171) 1.01
es2015_arrow 99518 ns/iter (± 250) 99472 ns/iter (± 271) 1.00
es2015_block_scoped_fn 97457 ns/iter (± 327) 97427 ns/iter (± 247) 1.00
es2015_block_scoping 184739 ns/iter (± 288) 185546 ns/iter (± 324) 1.00

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.