为多个javascript文件创建使用Google闭包的脚本

为多个javascript文件创建使用Google闭包的脚本,javascript,minify,google-closure,Javascript,Minify,Google Closure,我需要使用googleclosurecompiler.jar来缩小我正在进行的一个大型项目。我有多个js文件要编译成一个game.min.js文件。我知道我可以使用以下方法: java -jar compiler.jar --js file1.js --js file2.js --js etc, etc --js_output_file game.min.js …但我有很多文件,据我所知,Closure不支持添加目录并查找该目录下的所有*.js文件。我笨手笨脚的谷歌搜索没有给我任何工具,我可以

我需要使用googleclosurecompiler.jar来缩小我正在进行的一个大型项目。我有多个js文件要编译成一个game.min.js文件。我知道我可以使用以下方法:

java -jar compiler.jar --js file1.js --js file2.js --js etc, etc --js_output_file game.min.js
…但我有很多文件,据我所知,Closure不支持添加目录并查找该目录下的所有*.js文件。我笨手笨脚的谷歌搜索没有给我任何工具,我可以使用的工作(或没有任何工作,无论如何)

是否有人发现/使用/编写了一个脚本,该脚本在目录中循环,并将所有的.js文件输出到一个缩小的文件中?我对php、python等都没有希望,因此非常感谢您的帮助。

您可以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
任务。

在应用Google Closure编译器之前,应该连接所有源文件

对于所有相关任务,可以使用Ant构建工具。另外,还有一个很棒的项目,它对JS更方便。grunt.js有
grunt contrib concat
grunt 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']);
}; 

指定文件时也可以使用通配符。您可以将示例更改为:

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

这将把当前工作目录中的所有.js文件合并到您指定的输出文件中。

谢谢您的回答。请原谅我的无知,但我假设我仍然必须在这里显式地添加每个目录和该目录中的每个文件?不允许使用通配符?我找到了一个我们用于JSmin的旧批处理文件,并将其修改为使用googleclosure。我会给你最好的答案,因为蚂蚁似乎很适合做这类事情!这使得任何错误或警告更难定位。如果要查找并连接所有源代码,不妨构建一个适当的命令行或标志文件。这是我出于类似原因采用的方法,但现在的问题是,我无法再生成有用的源代码映射,因为它们都指向相关文件。这些标志文件是什么?我在哪里可以找到这些文件的参考资料?最初,我有两个用于此构建的shell脚本,但是维护Mac和Windows的文件列表变得很烦人,这就是为什么我尝试了一个跨平台的Grunt解决方案——而现在我没有有用的源代码映射!闭包编译器设计为获取多个源js文件并输出单个编译文件-从这个意义上说,它为您进行concate。我们应该修改编译器命令行运行程序,以便可以使用普通的shell通配符,但是,如果您正在构建一个脚本,那么您应该构建一个脚本,该脚本只需使用列出的所有源代码为编译器创建一个标志文件。