2013-03-07 25 views
3

我需要使用Google Closure compiler.jar來縮小我正在處理的一個巨大項目。我有多個js文件,我想編譯成一個game.min.js文件。我知道我可以使用以下命令:創建腳本以將Google Closure用於多個javascript文件

java -jar compiler.jar --js file1.js --js file2.js --js etc, etc --js_output_file game.min.js 

...但我的文件很多,我瞭解封沒有添加一個目錄,並找出所有居住下的* .js文件的支持該目錄。我的摸索谷歌搜索沒有給我任何工具,我可以用來工作(或沒有任何工作在任何速度)。

是否有人在那裏發現/使用過/編寫了一個腳本,該腳本循環遍歷一個目錄並將所有.js文件吐出成單個縮小文件?我無法用php,python等,所以任何幫助非常感謝。

+0

我們應該修改編譯器命令行運行程序,以便可以使用普通的shell通配符,但是如果您正在構建腳本,則應該創建一個爲編譯器創建標記文件,並列出所有來源。 – John 2013-03-07 23:44:16

回答

2

您可以use ant to automate the use of the closure compile r。

我這樣做是在兩個獨立的步驟,然後拼接編譯:

<concat destfile="src/somepath/app.concat.js"> 
    <filelist dir="src/somepath"> 
     <file name="a.js" /> 
     <file name="b.js" /> 
     <file name="c.js" /> 
     <file name="d.js" /> 
    </filelist> 
</concat> 

<jscomp compilationLevel="simple" warning="quiet" debug="false" output="src/app.min.js"> 
    <sources dir="src/somepath"> 
     <file name="app.concat.js" /> 
    </sources> 
</jscomp> 

注意的是,文件的順序是非常重要的。這就是爲什麼你不能簡單地將文件集傳遞給jscomp任務。

+0

感謝您的回答。原諒我的無知,但我認爲我仍然需要在這個目錄明確添加每個目錄和每個文件?沒有通配符允許? – 2013-03-07 12:48:17

+0

我發現了一個我們用於JSmin的舊批處理文件,並修改了它以使用Google Closure。我會給你最好的答案,因爲看起來螞蟻很適合這種事情! – 2013-03-08 07:21:50

-1

在應用Google Closure編譯器之前,您應該連接所有源文件。

對於所有相關任務,您可以使用Ant構建工具。另外,還有一個很棒的項目,這對於JS來說更方便。對於Grunt.js,有grunt-contrib-concatgrunt-shell npm模塊,第一個用於連接,另一個用於運行控制檯命令。

你Gruntfile.js看起來是這樣的:

module.exports = function(grunt) { 
    // Project configuration. 
    grunt.initConfig({ 
     concat: { 
      js: { 
       src: ['src/js/*.js'], 
       dest: 'dist/pre-build.js' 
      } 
     }, 

     shell: { 
      optimize: { 
       command: 'google closure compiler command here', 
       stdout: true 
      } 
     } 
    }); 

    grunt.loadNpmTasks('grunt-shell'); 
    grunt.loadNpmTasks('grunt-contrib-concat'); 

    // Default task. 
    grunt.registerTask('default', ['concat', 'shell:optimize']); 
}; 
+1

這使得任何錯誤或警告更難以找到。如果您要查找並連接所有源代碼,那麼您可能需要構建適當的命令行或標記文件。 – John 2013-03-07 23:41:17

+0

這是我出於類似原因而採用的方法,但現在我遇到的問題是我無法再生成有用的源地圖,因爲它們都指向了concatinated文件。這些標誌文件是什麼 - 在哪裏可以找到關於此的任何參考? 本來我有兩個用於這個構建的shell腳本,但是爲Mac和Windows維護文件列表讓人感到很疲憊,這就是爲什麼我嘗試了一個跨平臺的Grunt解決方案 - 現在我沒有有用的源地圖! – 2013-11-21 11:16:11

+0

閉包編譯器旨在獲取多個源js文件並輸出單個編譯文件 - 在這種情況下,它會爲您編寫連接。 – Elemental 2015-08-15 13:00:44

1

您也可以指定文件時使用通配符。您可以將您的例子更改爲:

java -jar compiler.jar --js *.js --js_output_file game.min.js 

這應該將所有的.js文件的當前工作目錄複製到您指定的輸出文件。

相關問題