700 releases (165 breaking)
Uses new Rust 2021
new 0.166.3 | Jan 27, 2023 |
---|---|
0.165.4 | Jan 24, 2023 |
0.160.28 | Dec 21, 2022 |
0.160.1 | Nov 30, 2022 |
0.16.1 | Jul 31, 2021 |
#696 in Web programming
17,003 downloads per month
Used in 31 crates
(9 directly)
3.5MB
89K
SLoC
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
lib.rs
:
JavaScript minifier implemented in rust.
Assumptions
Like other minification tools, swc minifier assumes some things about the input code.
- TDZ violation does not exist.
In other words, TDZ violation will be ignored.
- Acesssing top-level identifiers do not have side effects.
If you declare a variable on globalThis
using a getter with side-effects,
swc minifier will break it.
Debugging
In debug build, if you set an environment variable SWC_CHECK
to 1
, the
minifier will check the validity of the syntax using node --check
Cargo features
debug
If you enable this cargo feature and set the environment variable named
SWC_RUN
to 1
, the minifier will validate the code using node before each
step.
Dependencies
~9–16MB
~321K SLoC