3

私が取り組んでいる巨大なプロジェクトを縮小するには、Google Closure compiler.jar を使用する必要があります。単一の game.min.js ファイルにコンパイルしたい複数の js ファイルがあります。私は以下を使用できることを知っています:

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

...しかし、私はたくさんのファイルを持っています。私が理解しているように、クロージャーはディレクトリを追加し、そのディレクトリの下にあるすべての *.js ファイルを見つけることをサポートしていません。私の手探りのグーグル検索では、仕事に使用できるツールが何も提供されません(または、とにかく機能するものは何もありません)。

ディレクトリをループし、すべての .js ファイルを単一の縮小ファイルに吐き出すスクリプトを見つけた/使用した/書いた人はいますか? 私はphp、pythonなどには絶望的ですので、どんな助けでも大歓迎です。

4

3 に答える 3

2

ant を使用して、クロージャ コンパイルrの使用を自動化できます。

連結してからコンパイルするという2つの別々のステップでそれを行います。

<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そのため、単純にファイルセットをタスクに渡すことはできません。

于 2013-03-07T12:33:48.763 に答える
1

ファイルを指定するときにワイルドカードを使用することもできます。例を次のように変更できます。

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

これにより、現在の作業ディレクトリ内のすべての .js ファイルが、指定した出力ファイルに結合されます。

于 2014-01-16T20:52:06.337 に答える
-1

Google Closure コンパイラを適用する前に、すべてのソース ファイルを連結する必要があります。

関連するすべてのタスクには、Ant ビルド ツールを使用できます。また、JS の方が便利な優れたGrunt.jsプロジェクトもあります。Grunt.js にはgrunt-contrib-concatおよびgrunt-shellnpm モジュールがあり、最初は連結用で、もう 1 つはコンソール コマンドを実行するためのものです。

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']);
}; 
于 2013-03-07T12:47:37.950 に答える