swc/crates/swc_ecma_minifier
Donny/강동윤 fd997d3712
feat(es/minifier): Respect more options (#8582)
**Description:**

This PR makes the ES minifier respect more options.

Changes:
 - `reduce_vars` now enables IIFE invoker.
 - `reduce_vars` now enables seq inliner.
 - `top_retain` is now respected by seq inliner.
 - `arguments` is now ignored by seq inliner.

---------

Co-authored-by: austaras <austaras@outlook.com>
2024-02-02 12:35:58 +00:00
..
benches refactor(swc_node_base): Rename to swc_malloc (#8272) 2023-11-11 19:10:56 +00:00
examples refactor(swc_node_base): Rename to swc_malloc (#8272) 2023-11-11 19:10:56 +00:00
fuzz chore(es/minifier): Configure fuzzer (#6246) 2022-10-25 04:36:03 +00:00
inputs fix(es/minifier): Fix bugs (#2955) 2022-01-05 05:12:52 +09:00
scripts chore(es/minifier): Fix script for extracting test cases from next.js app (#8092) 2023-10-10 23:18:39 +09:00
src feat(es/minifier): Respect more options (#8582) 2024-02-02 12:35:58 +00:00
tests feat(es/minifier): Respect more options (#8582) 2024-02-02 12:35:58 +00:00
.eslintrc chore(repo): Configure prettier (#4523) 2022-05-04 14:25:28 +00:00
.gitignore feat(es/minifier): Remove duplicate var declarations (#5373) 2022-08-03 13:05:56 +09:00
Cargo.toml chore: Bump crates 2024-02-02 01:19:28 +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