内部関数の名前を変更しないようClosure Compilerに指示するにはどうすればよいですか?例えば、与えられたこのコード:クローズコンパイラに、SIMPLE_OPTIMIZATIONSを使用して内部関数の名前を変更しないように指示するにはどうすればよいですか?
function aMeaninglessName() {
function someMeaningfulName() {
}
return someMeaningfulName;
}
...私は外側の関数(私は積極的にそれは、スペースを節約するためにしたい)に名前を変更閉鎖で元気ですが、私はそのよう(関数名someMeaningfulName
が放置たいコールスタックに表示される名前は "someMeaningfulName"であり、 "a"などではありません。これは、コードを呼び出すコードが、コード内の名前ではなく、ファクトリ関数によって返された参照を介して行われるという事実にもかかわらずです。たとえば、これは純粋にデバッグサポート用です。私は関数が実際の名前ということにしたい
注、例えばこれはthis other questionの重複ではありませんので、匿名でその名前を使用して、いくつかのプロパティに割り当てられてはなりません。
このややわかりにくい使用例は、externs機能またはexports機能のいずれによってもカバーされていないようです。 (私はそれが捨てることができるannotationがあることを望んでいた。)しかし、私はクローズコンパイラの教祖ではない、あなたの何人かが望んでいる。当然、それを行う方法がない場合、それは容認できる答えです。
(ユースケースは、私はSIMPLE_OPTIMIZATIONSと閉鎖によって事前に圧縮されていますライブラリのバージョンを提供したい。それへの呼び出しに応じて機能を作成するライブラリである、誰かがそのコピーを使用している場合のライブラリを独自の非圧縮コードでデバッガ[または他の同様の操作]で関数にシングルステップ実行すると、意味のある名前が表示されます。eval
で回避するか、手動で圧縮結果を編集します[in事実、文脈は十分にユニークで、私はsed
スクリプトをそれに投げることができます]しかし、それは扱いにくく、率直に言って私たちを「面倒な価値がない」領域にして、単純でメンテナンスの少ない方法を探しています)。
私はそれがそれの価値があると思った場合、私は自分のローカルカスタマイズされたバージョンのコンパイラを使用して、デフォルトのコーディング規約を包むための 'CodingConventions.Proxy'を持ち、override ... what、' isPrivateそのメンバーに 'false'を返すようにするには? –
isExported(String name、boolean local)は、特に "local"がtrueの場合に、対象となるメソッドです。 – John
ありがとうございます。だから、フラグを追加するために 'CommandLineRunner'をハックする必要がありますか?そして、物事の見た目からは、デフォルトではなくClosureCodingConventionをラップまたは拡張して、普通に特別なビットを加えたのと同じ動作を得たいと思うかもしれません。それはあまりにも悪くないですが、クロージャーはダウンロードしてビルドするのに手間がかかりません。私が本当に野心的だと感じたら、代わりに注釈を追加してパッチとして提供するかもしれません。 –