# 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. ## Testing ### Real-library tests You can use vscode to see diffs. Select a file from `tests/projects/output` and select the corresponding file from `tests/projects/refs`. Then you can right click to see an option to open diff. #### Splitting a library test Extracting only subset from a library test makes development much easier. Split status: - [ ] angular-1.2.5 - [x] backbone-1.1.0 - [ ] jquery-1.9.1 - [ ] jquery.mobile-1.4.2 - [ ] mootools-1.4.5 - [x] underscore-1.5.2 - [ ] yui-3.12.0 ### Tests from terser Tests ported from terser has - input.js - config.json - mangle.json (if name mangling is enabled) - output.js (if exists and can be modified if our one is better or due to lack of frequency-aware base54) - output.terser.js (if exists) #### Copying tests Replace the content of `terser/test/compress.js` with it of `scripts/compress.js` and run `npm run test:compress`