Skip to content

Commit 1fe5c3a

Browse files
authored
feat(es): Use minify.format.ascii_only if output.charset is not specified (#7258)
**Related issue:** - Closes #7240.
1 parent 8fc5273 commit 1fe5c3a

File tree

4 files changed

+60
-1
lines changed

4 files changed

+60
-1
lines changed

crates/swc/src/config/mod.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,14 @@ impl Options {
577577
_ => TsImportExportAssignConfig::Classic,
578578
};
579579

580+
let charset = cfg.jsc.output.charset.or_else(|| {
581+
if js_minify.as_ref()?.format.ascii_only {
582+
Some(OutputCharset::Ascii)
583+
} else {
584+
None
585+
}
586+
});
587+
580588
let pass = PassBuilder::new(
581589
cm,
582590
handler,
@@ -782,7 +790,7 @@ impl Options {
782790
comments: comments.cloned(),
783791
preserve_comments,
784792
emit_source_map_columns: cfg.emit_source_map_columns.into_bool(),
785-
output: cfg.jsc.output,
793+
output: JscOutputConfig { charset },
786794
})
787795
}
788796
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{
2+
"jsc": {
3+
"parser": {
4+
"syntax": "ecmascript",
5+
"jsx": false
6+
},
7+
"target": "es5",
8+
"loose": true,
9+
"minify": {
10+
"compress": {
11+
"dead_code": true,
12+
"drop_console": true,
13+
"drop_debugger": true,
14+
"passes": 3
15+
},
16+
"format": {
17+
"asciiOnly": true
18+
},
19+
"mangle": {
20+
"toplevel": false,
21+
"keep_classnames": false,
22+
"keep_fnames": false,
23+
"keep_private_props": false,
24+
"ie8": false,
25+
"safari10": false
26+
}
27+
}
28+
},
29+
"module": {
30+
"type": "commonjs"
31+
},
32+
"isModule": true
33+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export default {
2+
\u3131: '\u11B0',
3+
'\u3141': '\u11B1',
4+
['\u3142']: '\u11B2',
5+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", {
3+
value: !0
4+
}), Object.defineProperty(exports, "default", {
5+
enumerable: !0,
6+
get: function() {
7+
return _default;
8+
}
9+
});
10+
var _obj, _default = ((_obj = {
11+
\u3131: "\u11B0",
12+
\u3141: "\u11B1"
13+
})["\u3142"] = "\u11B2", _obj);

0 commit comments

Comments
 (0)