This commit is contained in:
Lauri Rooden 2024-06-28 15:16:40 +02:00 committed by GitHub
commit 72597eaafe
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 30 additions and 1 deletions

View File

@ -1029,6 +1029,15 @@ discarded by the compressor as not referenced.
The safest comments where to place copyright information (or other info that
needs to be kept in the output) are comments attached to toplevel nodes.
### Specify preferred mangled name in comment annotations
`/*@mangleTo:X*/` or `/*@mangleTo:X*/` comments allow you to choose the name.
```javascript
(function(one /*#mangleTo:H*/, two /*#mangleTo:i*/) { /*..*/ })(1, 2);
// results (function(H,i){ /*..*/ )(1,2);
```
### The `unsafe` `compress` option
It enables some transformations that *might* break code logic in certain

View File

@ -572,7 +572,13 @@ function next_mangled_name(def, options) {
scopes.push(scope);
} while (scope = scope.parent_scope);
});
var name;
var comment = def.orig[0].start.comments_after[0]?.value;
var preferred_name = comment && /[@#]mangleTo:(.*)/.exec(comment);
var name = preferred_name && preferred_name[1];
if (name && !names.has(name)) {
in_use.set(name, true);
return name;
}
for (var i = 0; i < holes.length; i++) {
name = base54(holes[i]);
if (names.has(name)) continue;

View File

@ -965,6 +965,20 @@ function_name_mangle: {
expect_stdout: "function"
}
function_name_mangle_from_preferred_comment: {
options = {
keep_fargs: false,
}
mangle = {}
input: {
(function(one /*#mangleTo:W*/, two) {
console.log(one, two);
})(1, 2);
}
expect_exact: "(function(W,o){console.log(W,o)})(1,2);"
expect_stdout: "1 2"
}
function_name_mangle_ie8: {
options = {
keep_fargs: false,