UglifyJS を使用して、連結された一連のファイルを縮小します。これは正常に機能しますが、十分ではありません。ビルドされた lib は名前空間を使用するため、クラス、関数、および定数はルート名前空間変数に格納されます。
(function() {
var root = { api:{}, core:{}, names:{} };
/* util.js file */
root.names.SOME_LONG_NAMED_CONST='Angel';
/* Person.js file */
root.core.Person = function(name) { this.name = name };
/* API.js with the functions we want to expose */
root.api.perform = function(param_for_api) { /* do something */ }
window.lib_name.perform = root.api.perform;
})();
最小ではないバージョンに縮小されています
(function(){var a={api:{},core:{},names:{}};a.names.SOME_LONG_NAMED_CONST="Angel",a.core.Person=function(a){this.name=a},a.api.perform=function(){},window.lib_name.perform=a.api.perform})();
uglify はおそらく、ルート var はそのままにしておく必要があり、変更できないデータ構造であると考えていることを理解しています。UglifyJS がルート名前空間でネストされた名前をマングルできるようにする方法はありますか?