关闭编译器升级后不生成缩小文件

Closure Compiler not generating minified file after upgrade

这与编译器版本 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:\path\externs.js 
--create_source_map C:\path\min.map.js 
--output_wrapper "%output%//# sourceMappingURL=urlToMap
--source_map_format V3 
--js C:\path\file1.js 
--js C:\path\file2.js 
--js_output_file C:\path\min.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:\path\externs.js 
--create_source_map C:\path\min.map.js
--output_wrapper "%output%//# sourceMappingURL=urlToMap
--source_map_format V3 
--js C:\path\file1.js 
--js C:\path\file2.js 
--js_output_file C:\path\min.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