我使用Typescript命令(tsc)創建一個包含所有平板類的單個Javascript文件。Typescript和Google Closure
tsc "./Main.ts" -out "./script/myProject_debug.js" --declarations
然後,我想混淆與谷歌閉幕(compiler.jar)這樣的文件:
java -jar ./compiler/compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js "./script/myProject_debug.js" > "./script/myProject.js".
但是,當我執行結果混淆/優化的代碼,我得到這個以下錯誤:未捕獲的類型錯誤:無法讀取的未定義
以下哪個非混淆JS代碼匹配屬性「原型」(由TSC命令生成):
var __extends = this.__extends || function (d, b) {
function __() { this.constructor = d; }
__.prototype = b.prototype;
d.prototype = new __();
}
此部分用於翻譯「擴展」Typescript關鍵字,而b的等效項未定義。
是否有人得到類似的錯誤或/並得到一個解決方案,能夠用一個Typescript編譯文件谷歌關閉混淆?
我嘗試使用uglifyjs命令並且輸出文件完美地工作,但我希望完全混淆(類,參數,變量,方法等)。此外,Google Closure提供的額外優化將受到歡迎。
謝謝你!
Closure編譯器和UglifyJS都不混淆javascript。兩者都縮小了它,是的,這使得它更難閱讀 - 但它仍然是相同的腳本。如果你通過美化器運行輸出,你會得到原始的腳本 - 儘管它會被刪除註釋並具有不同的變量名稱。 – AHM
@AHM這不是Closure編譯器的真實情況。這是一個真正的優化編譯器,它可以通過非平凡的方式更改代碼。在許多情況下,美化代碼不會給你任何接近原始腳本的東西。 –
是的,但即使打開了高級優化,代碼也不會被混淆。任何熟悉JavaScript的人都能理解代碼的作用。如果目標是最小化和優化代碼Closure是一個好工具,但如果目標是混淆它,我認爲它不是很有用 – AHM