Есть два класса, первый используется во втором, второй экспортируется.
//file1.js
export default class Foo{
publicVarFoo = 1;
#privateVarFoo = 2;
publicMethodFoo(){}
#privateMethodFoo(){}
}
//file2.js, entrypoint
import Foo from "./file1.js"
export default class Bar{
constructor(){
this.foo = new Foo();
}
publicVarBar = 1;
#privateVarBar = 2;
publicMethodBar(){
this.foo.publicMethodFoo();
console.log(this.foo.publicVarFoo );
}
#privateMethodBar(){}
}
Единственная точка входа это класс Bar, класс Foo из внешнего кода получить невозможно. При этом terser оставляет неизменными имена publicVarFoo, publicMethodFoo, publicVarBar, publicMethodBar, а хотелось бы чтобы оставались только публичные переменные и методы одного класса, который доступен для внешнего кода, то есть publicVarBar и publicMethodBar.
Я нашёл вариант с настройкой
terserOptions: {
mangle: {
properties: {
regex: /^_/,
}
},
}
но для неё нужно переименовывать все переменные и фукнции. Возможно есть другой способ?