以下是包含多个输入文件的五种通配技术,文档从CommandLineRunner
类中提取:
(1)这是muka 技术的一种变体,去掉了--js
不需要的标志:
java -jar compiler.jar \
--js_output_file build/out.js `find ./src/*.js`
从文档:
标志名称是可选的--js
,因为默认情况下 args 被解释为文件。
这将包括 中的所有.js
文件/src/
,但不包括 的子目录中的任何文件/src/
。
(2)类似于1,但将包括所有.js
文件/src/
及其所有子目录:
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
从文档:
find
将 Closure Compiler 与and结合使用时,可以方便地利用附加参数功能xargs
:
find MY_JS_SRC_DIR -name '*.js' \
| xargs java -jar compiler.jar --manage_closure_dependencies
该find
命令将在目录中生成一个“*.js”源文件列表,MY_JS_SRC_DIR
同时xargs
将它们转换为一个以空格分隔的参数集,这些参数将附加到
java
命令中以运行编译器。
请注意,
--manage_closure_dependencies
在这种情况下使用该选项很重要,因为由 生成的订单find
不太可能相对于goog.provide()
和正确排序goog.requires()
。
(4) v20140625
版本增加了对(globstar) 通配符的支持**
,它递归匹配所有子目录。
例如,这将包括所有.js
文件/src/
及其所有子目录:
java -jar compiler.jar \
--js_output_file build/out.js './src/**.js'
更多信息在这里。从文档:
您也可以使用 minimatch 样式的 glob 模式。例如,使用:
--js='**.js' --js='!**_test.js'
递归包含所有不以 _test.js 结尾的 js 文件
来自Java 文档:
以下规则用于解释 glob 模式:
- 该
*
字符匹配名称组件的零个或多个字符,而不跨越目录边界。
**
字符匹配零个或多个跨越目录边界的字符。
(5) v20140625版本
还增加了一个新特性:如果输入路径是一个目录,那么.js
该目录下的所有文件和所有子目录都会被包括在内。
例如,这将包括所有.js
文件/src/
及其所有子目录:
java -jar compiler.jar \
--js_output_file build/out.js './src/'
更多信息在这里。