swc/crates/swc_ecma_minifier
Donny/강동윤 2c861bd9e5
feat(es/ast): Improve Id APIs (#4614)
# API Changes

 - `Ident` now has `to_id()`. This method is added to allow removing an import.
2022-05-11 12:02:14 +09:00
..
benches feat(es/resolver): Use different syntax context for unresolved refs (#4436) 2022-04-26 07:38:50 +00:00
examples feat(es/resolver): Use different syntax context for unresolved refs (#4436) 2022-04-26 07:38:50 +00:00
inputs fix(es/minifier): Fix bugs (#2955) 2022-01-05 05:12:52 +09:00
scripts fix(es/minifier): Preserve more identifiers if eval or with exists (#4580) 2022-05-09 07:17:33 +00:00
src feat(es/ast): Improve Id APIs (#4614) 2022-05-11 12:02:14 +09:00
tests test(es/minifier): Postpone tests which can be verified by execution tests (#4600) 2022-05-10 14:47:37 +09:00
.eslintrc chore(repo): Configure prettier (#4523) 2022-05-04 14:25:28 +00:00
.gitignore perf(es/minifier): Add a fast-path to export merger (#3891) 2022-03-07 14:21:57 +09:00
Cargo.toml feat(es/ast): Improve Id APIs (#4614) 2022-05-11 12:02:14 +09:00
one.sh feat(es/minifier): Implement more rules for hoist_props (#4262) 2022-04-06 11:01:45 +00:00
package.json fix(es/minifier): Fix optimization of assignment expressions (#3231) 2022-01-12 08:26:56 +09:00
README.md chore(es/minifier): Add a script to instrument real-world inputs (#4399) 2022-04-22 10:37:04 +00:00
yarn.lock fix(es/minifier): Fix optimization of assignment expressions (#3231) 2022-01-12 08:26:56 +09:00

Minifier

EcmaScript minifier for the SWC project. This is basically a port of terser.

Note

Currently name mangler is very simple. To focus on creating a MVP, I (kdy1) will use simple logic for name mangler and implement the content-aware name mangler after publishing first non-beta version.

Debugging tips

If the output contains variables named e, t, n it typically means the original library is published in a minified form and the input contains eval. The current swc name mangler does not do anything if eval is used.

Profiling the minifier

From mac os x, run

./scripts/instrument/all.sh path/to/input/dir