Skip to content

Commit

Permalink
fix(es/minifier): Accept keep_fnames and keep_classnames (#7090)
Browse files Browse the repository at this point in the history
  • Loading branch information
cyjake committed Mar 16, 2023
1 parent 5f4fea2 commit 0086914
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 2 deletions.
19 changes: 19 additions & 0 deletions crates/swc/src/config/issue-6996.json
@@ -0,0 +1,19 @@
{
"test": ".jsx?$",
"jsc": {
"parser": {
"syntax": "ecmascript",
"jsx": true,
"decorators": true,
"dynamicImport": true
},
"transform": {
"react": {
"refresh": true
}
},
"minify": {
"keep_fnames": true
}
}
}
4 changes: 2 additions & 2 deletions crates/swc/src/config/mod.rs
Expand Up @@ -920,10 +920,10 @@ pub struct JsMinifyOptions {
#[serde(default)]
pub ecma: TerserEcmaVersion,

#[serde(default)]
#[serde(default, alias = "keep_classnames")]
pub keep_classnames: bool,

#[serde(default)]
#[serde(default, alias = "keep_fnames")]
pub keep_fnames: bool,

#[serde(default)]
Expand Down
6 changes: 6 additions & 0 deletions crates/swc/src/config/tests.rs
Expand Up @@ -26,3 +26,9 @@ fn jsonc() {
let rc = parse_swcrc(include_str!("jsonc.json")).expect("failed to parse");
dbg!(&rc);
}

#[test]
fn issue_6996() {
let rc = parse_swcrc(include_str!("issue-6996.json")).expect("failed to parse");
dbg!(&rc);
}
15 changes: 15 additions & 0 deletions node-swc/__tests__/minify/issue_6996_test.mjs
@@ -0,0 +1,15 @@
import swc from "../../..";

it("should not throw when keep_fnames is on", async () => {
async function minify() {
const { code } = await swc.transform('function Foo() {}', {
jsc: {
minify: {
keep_fnames: true,
},
},
});
return code;
}
await expect(minify()).resolves.toEqual('function Foo() {}\n');
});

1 comment on commit 0086914

@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: 0086914 Previous: 7b491a6 Ratio
es/full/bugs-1 290273 ns/iter (± 11187) 303060 ns/iter (± 9622) 0.96
es/full/minify/libraries/antd 1618876345 ns/iter (± 32472006) 1612399398 ns/iter (± 36189086) 1.00
es/full/minify/libraries/d3 288653964 ns/iter (± 6743002) 292462760 ns/iter (± 9796949) 0.99
es/full/minify/libraries/echarts 1193792367 ns/iter (± 16161577) 1205260472 ns/iter (± 10082545) 0.99
es/full/minify/libraries/jquery 89131021 ns/iter (± 388626) 90251404 ns/iter (± 1051258) 0.99
es/full/minify/libraries/lodash 105236042 ns/iter (± 1134894) 103991239 ns/iter (± 1456531) 1.01
es/full/minify/libraries/moment 51565275 ns/iter (± 241456) 51752270 ns/iter (± 395514) 1.00
es/full/minify/libraries/react 18730368 ns/iter (± 105608) 18891734 ns/iter (± 83414) 0.99
es/full/minify/libraries/terser 239441296 ns/iter (± 2576391) 237520193 ns/iter (± 3577386) 1.01
es/full/minify/libraries/three 423719900 ns/iter (± 4557115) 423789203 ns/iter (± 7138910) 1.00
es/full/minify/libraries/typescript 3039236306 ns/iter (± 33966531) 3036115614 ns/iter (± 26610501) 1.00
es/full/minify/libraries/victory 642076542 ns/iter (± 15631913) 637731502 ns/iter (± 8032894) 1.01
es/full/minify/libraries/vue 128555636 ns/iter (± 929759) 127609750 ns/iter (± 1554105) 1.01
es/full/codegen/es3 26771 ns/iter (± 173) 26133 ns/iter (± 136) 1.02
es/full/codegen/es5 26926 ns/iter (± 58) 26228 ns/iter (± 43) 1.03
es/full/codegen/es2015 26878 ns/iter (± 36) 26066 ns/iter (± 49) 1.03
es/full/codegen/es2016 26844 ns/iter (± 74) 26194 ns/iter (± 38) 1.02
es/full/codegen/es2017 26841 ns/iter (± 32) 26054 ns/iter (± 89) 1.03
es/full/codegen/es2018 26874 ns/iter (± 54) 26171 ns/iter (± 63) 1.03
es/full/codegen/es2019 26927 ns/iter (± 94) 26097 ns/iter (± 134) 1.03
es/full/codegen/es2020 26866 ns/iter (± 72) 26056 ns/iter (± 90) 1.03
es/full/all/es3 180400305 ns/iter (± 2575616) 179663641 ns/iter (± 3239851) 1.00
es/full/all/es5 168138737 ns/iter (± 4058590) 174089913 ns/iter (± 2059991) 0.97
es/full/all/es2015 133687377 ns/iter (± 2200530) 137194240 ns/iter (± 2455612) 0.97
es/full/all/es2016 130139626 ns/iter (± 1232160) 134595217 ns/iter (± 1778834) 0.97
es/full/all/es2017 129585758 ns/iter (± 1343361) 133335722 ns/iter (± 1928106) 0.97
es/full/all/es2018 124635311 ns/iter (± 1227496) 129105810 ns/iter (± 1766035) 0.97
es/full/all/es2019 121511641 ns/iter (± 1661521) 127149055 ns/iter (± 1558842) 0.96
es/full/all/es2020 117232021 ns/iter (± 534743) 119173529 ns/iter (± 711538) 0.98
es/full/parser 526366 ns/iter (± 7967) 539062 ns/iter (± 7962) 0.98
es/full/base/fixer 22356 ns/iter (± 81) 22425 ns/iter (± 96) 1.00
es/full/base/resolver_and_hygiene 81881 ns/iter (± 176) 81838 ns/iter (± 296) 1.00
serialization of ast node 124 ns/iter (± 0) 123 ns/iter (± 0) 1.01
serialization of serde 126 ns/iter (± 0) 126 ns/iter (± 0) 1
css/minify/libraries/bootstrap 28103580 ns/iter (± 92529) 28256741 ns/iter (± 79935) 0.99
css/visitor/compare/clone 2066510 ns/iter (± 20601) 2102216 ns/iter (± 10723) 0.98
css/visitor/compare/visit_mut_span 2254016 ns/iter (± 6457) 2250354 ns/iter (± 11749) 1.00
css/visitor/compare/visit_mut_span_panic 2310987 ns/iter (± 7453) 2326741 ns/iter (± 9863) 0.99
css/visitor/compare/fold_span 3004650 ns/iter (± 20100) 2997591 ns/iter (± 21193) 1.00
css/visitor/compare/fold_span_panic 3154634 ns/iter (± 19670) 3136274 ns/iter (± 24053) 1.01
css/lexer/bootstrap_5_1_3 5144865 ns/iter (± 10992) 5104865 ns/iter (± 7232) 1.01
css/lexer/foundation_6_7_4 4332601 ns/iter (± 9970) 4291237 ns/iter (± 17068) 1.01
css/lexer/tailwind_3_1_1 818144 ns/iter (± 1985) 815507 ns/iter (± 1783) 1.00
css/parser/bootstrap_5_1_3 21684614 ns/iter (± 189723) 21608003 ns/iter (± 77397) 1.00
css/parser/foundation_6_7_4 17249183 ns/iter (± 94865) 17273101 ns/iter (± 76973) 1.00
css/parser/tailwind_3_1_1 3338386 ns/iter (± 6923) 3324693 ns/iter (± 6831) 1.00
es/codegen/colors 329777 ns/iter (± 186411) 328356 ns/iter (± 184846) 1.00
es/codegen/large 1234066 ns/iter (± 643789) 1225878 ns/iter (± 630846) 1.01
es/codegen/with-parser/colors 48333 ns/iter (± 336) 47128 ns/iter (± 289) 1.03
es/codegen/with-parser/large 540113 ns/iter (± 2058) 521342 ns/iter (± 1583) 1.04
es/minify/libraries/antd 1436958759 ns/iter (± 28611219) 1393028341 ns/iter (± 23523503) 1.03
es/minify/libraries/d3 259952389 ns/iter (± 10373919) 250559198 ns/iter (± 3532594) 1.04
es/minify/libraries/echarts 1123152371 ns/iter (± 31846679) 1046359984 ns/iter (± 25408005) 1.07
es/minify/libraries/jquery 81999638 ns/iter (± 690918) 78533174 ns/iter (± 642202) 1.04
es/minify/libraries/lodash 98468541 ns/iter (± 876667) 93828179 ns/iter (± 888701) 1.05
es/minify/libraries/moment 47003286 ns/iter (± 798162) 45335969 ns/iter (± 317654) 1.04
es/minify/libraries/react 16837940 ns/iter (± 146595) 17033484 ns/iter (± 127454) 0.99
es/minify/libraries/terser 204081066 ns/iter (± 1925763) 204705289 ns/iter (± 3765704) 1.00
es/minify/libraries/three 359294288 ns/iter (± 6646134) 352204161 ns/iter (± 5285313) 1.02
es/minify/libraries/typescript 2598872259 ns/iter (± 16546595) 2620145722 ns/iter (± 12242103) 0.99
es/minify/libraries/victory 535524929 ns/iter (± 5698244) 531337549 ns/iter (± 10385876) 1.01
es/minify/libraries/vue 113618134 ns/iter (± 477317) 113910201 ns/iter (± 1073171) 1.00
es/visitor/compare/clone 2300709 ns/iter (± 5236) 2303852 ns/iter (± 20263) 1.00
es/visitor/compare/visit_mut_span 2665706 ns/iter (± 19372) 2643840 ns/iter (± 11331) 1.01
es/visitor/compare/visit_mut_span_panic 2724487 ns/iter (± 7485) 2702168 ns/iter (± 3149) 1.01
es/visitor/compare/fold_span 3771277 ns/iter (± 10322) 3745416 ns/iter (± 11622) 1.01
es/visitor/compare/fold_span_panic 3941335 ns/iter (± 20099) 3928548 ns/iter (± 11698) 1.00
es/lexer/colors 15482 ns/iter (± 20) 15416 ns/iter (± 74) 1.00
es/lexer/angular 7478313 ns/iter (± 6683) 7407745 ns/iter (± 10144) 1.01
es/lexer/backbone 998149 ns/iter (± 483) 986014 ns/iter (± 1651) 1.01
es/lexer/jquery 5617416 ns/iter (± 4817) 5558073 ns/iter (± 9885) 1.01
es/lexer/jquery mobile 8639887 ns/iter (± 6332) 8522672 ns/iter (± 25704) 1.01
es/lexer/mootools 4461924 ns/iter (± 1611) 4400409 ns/iter (± 7369) 1.01
es/lexer/underscore 843524 ns/iter (± 1240) 827073 ns/iter (± 2683) 1.02
es/lexer/three 26303133 ns/iter (± 12335) 26007723 ns/iter (± 55938) 1.01
es/lexer/yui 4702894 ns/iter (± 950) 4649385 ns/iter (± 19781) 1.01
es/parser/colors 29528 ns/iter (± 58) 29683 ns/iter (± 79) 0.99
es/parser/angular 15284270 ns/iter (± 77978) 15336719 ns/iter (± 104237) 1.00
es/parser/backbone 2229023 ns/iter (± 13572) 2235723 ns/iter (± 16726) 1.00
es/parser/jquery 12096811 ns/iter (± 123326) 12163693 ns/iter (± 88676) 0.99
es/parser/jquery mobile 18827140 ns/iter (± 106657) 18772585 ns/iter (± 105987) 1.00
es/parser/mootools 9192134 ns/iter (± 21735) 9240507 ns/iter (± 35654) 0.99
es/parser/underscore 1895495 ns/iter (± 11365) 1885563 ns/iter (± 9187) 1.01
es/parser/three 54044194 ns/iter (± 364728) 53963352 ns/iter (± 635845) 1.00
es/parser/yui 9238152 ns/iter (± 45497) 9280063 ns/iter (± 33062) 1.00
es/preset-env/usage/builtin_type 143692 ns/iter (± 35568) 142824 ns/iter (± 34172) 1.01
es/preset-env/usage/property 21064 ns/iter (± 80) 20901 ns/iter (± 112) 1.01
es/resolver/typescript 113252345 ns/iter (± 1227767) 115477938 ns/iter (± 1562659) 0.98
es/fixer/typescript 84637003 ns/iter (± 1130928) 84257419 ns/iter (± 600458) 1.00
es/hygiene/typescript 182341869 ns/iter (± 1805672) 175811428 ns/iter (± 2146590) 1.04
es/resolver_with_hygiene/typescript 326316910 ns/iter (± 3089780) 319130779 ns/iter (± 3243708) 1.02
es/visitor/base-perf/module_clone 79928 ns/iter (± 1043) 79748 ns/iter (± 1303) 1.00
es/visitor/base-perf/fold_empty 90420 ns/iter (± 1067) 89718 ns/iter (± 1561) 1.01
es/visitor/base-perf/fold_noop_impl_all 89493 ns/iter (± 1780) 89205 ns/iter (± 1328) 1.00
es/visitor/base-perf/fold_noop_impl_vec 90574 ns/iter (± 1219) 91249 ns/iter (± 1192) 0.99
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 56 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 54 ns/iter (± 0) 54 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 103 ns/iter (± 0) 101 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_unboxed 97 ns/iter (± 0) 96 ns/iter (± 0) 1.01
es/visitor/base-perf/visit_contains_this 3420 ns/iter (± 62) 3541 ns/iter (± 49) 0.97
es/base/parallel/resolver/typescript 5482712039 ns/iter (± 465434718) 4948174180 ns/iter (± 468364469) 1.11
es/base/parallel/hygiene/typescript 2179553637 ns/iter (± 38243890) 2156354519 ns/iter (± 27876535) 1.01
misc/visitors/time-complexity/time 5 91 ns/iter (± 0) 91 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 290 ns/iter (± 8) 288 ns/iter (± 0) 1.01
misc/visitors/time-complexity/time 15 603 ns/iter (± 12) 598 ns/iter (± 10) 1.01
misc/visitors/time-complexity/time 20 1149 ns/iter (± 28) 1233 ns/iter (± 65) 0.93
misc/visitors/time-complexity/time 40 5931 ns/iter (± 43) 6031 ns/iter (± 39) 0.98
misc/visitors/time-complexity/time 60 15280 ns/iter (± 71) 15161 ns/iter (± 23) 1.01
es/full-target/es2016 250358 ns/iter (± 402) 249904 ns/iter (± 534) 1.00
es/full-target/es2017 242446 ns/iter (± 482) 242367 ns/iter (± 592) 1.00
es/full-target/es2018 231529 ns/iter (± 531) 230784 ns/iter (± 490) 1.00
es2020_nullish_coalescing 92063 ns/iter (± 538) 90430 ns/iter (± 495) 1.02
es2020_optional_chaining 123949 ns/iter (± 390) 123389 ns/iter (± 705) 1.00
es2022_class_properties 146686 ns/iter (± 345) 146356 ns/iter (± 440) 1.00
es2018_object_rest_spread 95113 ns/iter (± 226) 94530 ns/iter (± 195) 1.01
es2019_optional_catch_binding 84628 ns/iter (± 211) 84098 ns/iter (± 442) 1.01
es2017_async_to_generator 85415 ns/iter (± 281) 84936 ns/iter (± 416) 1.01
es2016_exponentiation 89045 ns/iter (± 296) 88801 ns/iter (± 374) 1.00
es2015_arrow 93269 ns/iter (± 276) 92788 ns/iter (± 450) 1.01
es2015_block_scoped_fn 91351 ns/iter (± 227) 90579 ns/iter (± 411) 1.01
es2015_block_scoping 168711 ns/iter (± 597) 168566 ns/iter (± 426) 1.00

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

Please sign in to comment.