这与编译器版本 2013.11.18 完美配合:
java -jar C:/closure/compiler_v20131118.jar
--compilation_level ADVANCED_OPTIMISATIONS
--warning_level=VERBOSE
--jscomp_off=externsValidation
--summary_detail_level=3
--externs C:pathexterns.js
--create_source_map C:pathmin.map.js
--output_wrapper "%output%//# sourceMappingURL=urlToMap
--source_map_format V3
--js C:pathfile1.js
--js C:pathfile2.js
--js_output_file C:pathmin.js
--version 2>&1
但是缩小的文件不会使用编译器版本 2016.05.17 创建:
java -jar C:/closure/compiler_v20160517.jar
--compilation_level ADVANCED
--warning_level=VERBOSE
--jscomp_off=externsValidation
--summary_detail_level=3
--externs C:pathexterns.js
--create_source_map C:pathmin.map.js
--output_wrapper "%output%//# sourceMappingURL=urlToMap
--source_map_format V3
--js C:pathfile1.js
--js C:pathfile2.js
--js_output_file C:pathmin.js
--version 2>&1
我只在控制台中得到这个输出:
Closure Compiler (http://github.com/google/closure-compiler)
Version: v20160517
Built on: 2016/05/18 16:21
我做错了什么?
从 2013 年到 2016 年,编译器发生了很多变化。此 wiki 页面有一些更重要的更改:
https://github.com/google/closure-compiler/wiki/Managing-Dependencies
作为数据点,这里有一个对我有用的示例编译命令:
java -jar ../javascript/closure-compiler/build/compiler.jar
--entry_point=goog:myphysicslab.sims.pendulum.DoublePendulumApp
--compilation_level=SIMPLE --define=goog.DEBUG=true --define=goog.LOCALE='de'
--define=myphysicslab.lab.util.UtilityCore.ADVANCED=false --generate_exports
--js=../closure-library/ --js=src --jscomp_error=accessControls
--jscomp_error=ambiguousFunctionDecl --jscomp_error=checkTypes
--jscomp_error=checkVars --jscomp_error=const --jscomp_error=constantProperty
--jscomp_error=fileoverviewTags --jscomp_error=globalThis
--jscomp_error=invalidCasts --jscomp_error=misplacedTypeAnnotation
--jscomp_error=missingProperties --jscomp_error=missingProvide
--jscomp_error=missingRequire --jscomp_error=missingReturn
--jscomp_error=newCheckTypes --jscomp_error=strictModuleDepCheck
--jscomp_error=suspiciousCode --jscomp_error=typeInvalidation
--jscomp_error=undefinedNames --jscomp_error=undefinedVars
--jscomp_error=unknownDefines --jscomp_error=uselessCode
--jscomp_error=visibility --language_in=ECMASCRIPT5_STRICT
--dependency_mode=STRICT --warning_level=VERBOSE
您很可能需要添加--entry_point
和--dependency_mode
选项。
下面是使用高级编译和output_wrapper的示例命令:
java -jar ../javascript/closure-compiler/build/compiler.jar
--entry_point=goog:myphysicslab.sims.pendulum.DoublePendulumApp
--compilation_level=ADVANCED --define=goog.DEBUG=true
'--define=goog.LOCALE='''en''''
--define=myphysicslab.lab.util.UtilityCore.ADVANCED=true --generate_exports
--js=../closure-library/ --js=src --jscomp_error=accessControls
--jscomp_error=ambiguousFunctionDecl --jscomp_error=checkTypes
--jscomp_error=checkVars --jscomp_error=const --jscomp_error=constantProperty
--jscomp_error=fileoverviewTags --jscomp_error=globalThis
--jscomp_error=invalidCasts --jscomp_error=misplacedTypeAnnotation
--jscomp_error=missingProperties --jscomp_error=missingProvide
--jscomp_error=missingRequire --jscomp_error=missingReturn
--jscomp_error=newCheckTypes --jscomp_error=strictModuleDepCheck
--jscomp_error=suspiciousCode --jscomp_error=typeInvalidation
--jscomp_error=undefinedNames --jscomp_error=undefinedVars
--jscomp_error=unknownDefines --jscomp_error=uselessCode
--jscomp_error=visibility --language_in=ECMASCRIPT5_STRICT
--dependency_mode=STRICT --warning_level=VERBOSE
'--output_wrapper='''(function(){%output%}).call(window)''''
您可能对output_wrapper中的单引号有问题?
查看编译器选项:
java -jar ../closure-compiler/build/compiler.jar --help
这将提供有关选项的一些好信息,例如:
--entry_point VAL : A file or namespace to use as the
starting point for determining which
src files to include in the compilatio
n. ES6 and CommonJS modules are
specified as file paths (without the
extension). Closure-library namespaces
are specified with a "goog:" prefix.
Example: --entry_point=goog:goog.Promi
se