使用 Google Closure Compiler 应用程序将所有 .js 文件压缩在一个文件中

发布于 2024-09-29 18:00:13 字数 421 浏览 4 评论 0 原文

我想在命令行中使用 Google Closure Compiler 将同一目录中的所有文件 .js 压缩到一个文件中。

对于一个文件来说:

java -jar compiler.jar --js test.js --js_output_file final.js

但我在文档中没有找到如何将另一个文件放在 final.js 的末尾而不覆盖最后一个压缩文件?

我想要这样的东西:

java -jar compiler.jar --js --option *.js --js_output_file final.js

我可能或者必须做一个程序,将所有文件添加到一个文件中并在压缩后进行? 谢谢你,如果你能帮助我!

I would like to Compress all my file .js in a same directory in one file with Google Closure Compiler in a command line.

For one file it's :

java -jar compiler.jar --js test.js --js_output_file final.js

But I didn't find in the doc how put my other file at the end of final.js without write over the last compress file ?

I would like something like that :

java -jar compiler.jar --js --option *.js --js_output_file final.js

It's possible or must I do a programm who add all file in a file and after compress it ?
Thank you if you can help me !

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

如痴如狂 2024-10-06 18:00:13
java -jar path/to/closure-compiler/build/compiler.jar \ 
--js input_one.js \ 
--js input_two.js \ 
... \ 
--js_output_file compiled_output.js 
java -jar path/to/closure-compiler/build/compiler.jar \ 
--js input_one.js \ 
--js input_two.js \ 
... \ 
--js_output_file compiled_output.js 
叫嚣ゝ 2024-10-06 18:00:13

我尝试了 Orbits 的答案,但它并没有真正起作用,也许我使用的版本是较新的版本。我使用的命令是:

java -jar compiler.jar --js file1.js file2.js file3.js  --js_output_file --js_output_file compiled_output.js. 

I tried Orbits' answer, but It didn't really work perhaps the version I use is a newer version. The command I use is :

java -jar compiler.jar --js file1.js file2.js file3.js  --js_output_file --js_output_file compiled_output.js. 
一生独一 2024-10-06 18:00:13

假设您已经在 Mac 上安装了带有 Homebrew 的 Closure 编译器,您还可以连接所有文件,然后将它们通过管道传输到 Closure(这也应该以 java -jar 方式工作,但我没有这样做)已验证):

cat $(ls scripts/*.js) | closure-compiler --js_output_file main.js

Assuming that you’ve installed the Closure Compiler with Homebrew on a Mac, you can also concatenate all files and then pipe them to to Closure (this should also work the java -jar way, but I haven’t verified it):

cat $(ls scripts/*.js) | closure-compiler --js_output_file main.js
山川志 2024-10-06 18:00:13

这里有五种包含多个输入文件的通配技术,文档摘自 CommandLineRunner 类:


(1) 这是 muka 的技术,删除了不需要的 --js 标志:

java -jar compiler.jar \
    --js_output_file build/out.js `find ./src/*.js`

来自文档:

--js 标志名称是可选的,因为默认情况下 args 被解释为文件。

这将包括 /src/ 中的所有 .js 文件,但不会包括 /src/ 子目录中的任何文件。


(2)1 类似,但将包含 /src/ 中的所有 .js 文件 它的所有子目录

java -jar compiler.jar \
    --js_output_file build/out.js `find ./src/ -name '*.js'`

(3)2类似,但使用xargs

find ./src/ -name '*.js' \
    | xargs java -jar compiler.jar \
                --js_output_file build/out.js \
                --manage_closure_dependencies

来自文档:

使用时可以方便地利用附加参数功能
闭包编译器与 findxargs 结合使用:

find MY_JS_SRC_DIR -name '*.js' \
    | xargs java -jar compiler.jar --manage_closure_dependency

find 命令将在以下位置生成“*.js”源文件列表
MY_JS_SRC_DIR 目录,而 xargs 将转换它们
附加到单个以空格分隔的参数集
java 命令运行编译器。

请注意,使用
在这种情况下,--manage_closure_dependencies 选项是因为
find 生成的订单不太可能正确排序
尊重 goog.provide()goog.requires()


(4) v20140625
版本添加了对 ** (globstar) 通配符的支持,该通配符递归地
匹配所有子目录。

例如,这将包括 /src/ 及其所有子目录中的所有 .js 文件:

java -jar compiler.jar \
    --js_output_file build/out.js './src/**.js'

更多信息 此处。来自文档:

您还可以使用 minimatch 样式的 glob 模式。例如,使用:

--js='**.js' --js='!**_test.js'

递归包含所有不以_test.js结尾的js文件

来自 Java 文档

以下规则用于解释全局模式:

  • * 字符匹配名称组件的零个或多个字符,而不跨越目录边界。
  • ** 字符匹配零个或多个跨越目录边界的字符。

(5) v20140625
版本还添加了一个新功能:如果输入路径是目录,则所有 .js 文件
在该目录中,所有子目录都将包含在内。

例如,这将包括 /src/ 及其所有子目录中的所有 .js 文件:

java -jar compiler.jar \
    --js_output_file build/out.js './src/'

更多信息 此处

Here are five globbing techniques for including multiple input files, with documentation extracted from the CommandLineRunner class:


(1) This is a variation of muka's technique, removing the --js flag, which is not needed:

java -jar compiler.jar \
    --js_output_file build/out.js `find ./src/*.js`

From the docs:

The --js flag name is optional, because args are interpreted as files by default.

This will include all .js files in /src/, but won't include any files in subdirectories of /src/.


(2) Similar to 1, but will include all .js files in /src/ and all its subdirectories:

java -jar compiler.jar \
    --js_output_file build/out.js `find ./src/ -name '*.js'`

(3) Similar to 2, but uses xargs:

find ./src/ -name '*.js' \
    | xargs java -jar compiler.jar \
                --js_output_file build/out.js \
                --manage_closure_dependencies

From the docs:

It is convenient to leverage the additional arguments feature when using the
Closure Compiler in combination with find and xargs:

find MY_JS_SRC_DIR -name '*.js' \
    | xargs java -jar compiler.jar --manage_closure_dependencies

The find command will produce a list of '*.js' source files in
the MY_JS_SRC_DIR directory while xargs will convert them
to a single, space-delimited set of arguments that are appended to the
java command to run the Compiler.

Note that it is important to use the
--manage_closure_dependencies option in this case because the
order produced by find is unlikely to be sorted correctly with
respect to goog.provide() and goog.requires().


(4) The v20140625
release added support for the ** (globstar) wildcard, which recursively
matches all subdirectories.

For example, this will include all .js files in /src/ and all its subdirectories:

java -jar compiler.jar \
    --js_output_file build/out.js './src/**.js'

More info here. From the docs:

You may also use minimatch-style glob patterns. For example, use:

--js='**.js' --js='!**_test.js'

to recursively include all js files that do not end in _test.js

From the Java docs:

The following rules are used to interpret glob patterns:

  • The * character matches zero or more characters of a name component without crossing directory boundaries.
  • The ** characters matches zero or more characters crossing directory boundaries.

(5) The v20140625
release also added a new feature: if the input path is a directory, then all .js files
in that directory and all subdirectories will be included.

For example, this will include all .js files in /src/ and all its subdirectories:

java -jar compiler.jar \
    --js_output_file build/out.js './src/'

More info here.

戒ㄋ 2024-10-06 18:00:13

您可以使用 KjsCompiler: https://github.com/knyga/kjscompiler
。使用 Google Closure Compiler 应用程序以正确的顺序编译多个 JavaScript 文件

如何解决您的问题:
1.在js文件中添加注解,如下:

/**
* @depends {lib/somefile.js}
**/

如果你不关心编译链,可以忽略这一步。
2. java -jar kjscompile.jar

您可以在这里查看示例:https://github.com/knyga/kjscompiler/tree/master/examples

You can use KjsCompiler: https://github.com/knyga/kjscompiler
. Compiles multiple JavaScript files with Google Closure Compiler application in a right order

How to solve your problem:
1. Add annotations to js files, like this:

/**
* @depends {lib/somefile.js}
**/

If you do not care about compilation chain, you can ignore this step.
2. java -jar kjscompile.jar

You can look for example here: https://github.com/knyga/kjscompiler/tree/master/examples

幸福丶如此 2024-10-06 18:00:13
    <exec executable="java">
        <arg line="-jar ../lib/compiler.jar --compilation_level SIMPLE_OPTIMIZATIONS --language_in ECMASCRIPT5 --js_output_file=${compressdir}/js/controllers/jscontrollersfiles.js ${webappdir}/js/controllers/*.js" />
    </exec>

    <exec executable="java">
        <arg line="-jar ../lib/compiler.jar --compilation_level SIMPLE_OPTIMIZATIONS --language_in ECMASCRIPT5 --js_output_file=${compressdir}/js/controllers/jscontrollersfiles.js ${webappdir}/js/controllers/*.js" />
    </exec>

流殇 2024-10-06 18:00:13

谷歌关闭文档的 github 给出了以下命令。

如果您有多个脚本,则应该使用一个编译命令将它们全部编译在一起。

java -jar compiler.jar --js_output_file=out.js in1.js in2.js in3.js ...

您还可以使用 minimatch 风格的 glob。

# Recursively include all js files in subdirs
java -jar compiler.jar --js_output_file=out.js 'src/**.js'

# Recursively include all js files in subdirs, excluding test files.
# Use single-quotes, so that bash doesn't try to expand the '!'
java -jar compiler.jar --js_output_file=out.js 'src/**.js' '!**_test.js'

来源:https://github.com/google/closure-compiler#compiling-multiple -脚本

The github of google closure doc gives the below command.

If you have multiple scripts, you should compile them all together with one compile command.

java -jar compiler.jar --js_output_file=out.js in1.js in2.js in3.js ...

You can also use minimatch-style globs.

# Recursively include all js files in subdirs
java -jar compiler.jar --js_output_file=out.js 'src/**.js'

# Recursively include all js files in subdirs, excluding test files.
# Use single-quotes, so that bash doesn't try to expand the '!'
java -jar compiler.jar --js_output_file=out.js 'src/**.js' '!**_test.js'

Source : https://github.com/google/closure-compiler#compiling-multiple-scripts

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文