Package com.iizix.js.build
Class Compressor
- java.lang.Object
- com.iizix.js.build.Compressor
public class Compressor extends java.lang.Object
Compressor class to compress CSS and JavaScript.The JavaScript compressor uses Google Closure Compiler v20160822.
- Author:
- Christopher Mindus
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Compressor.Level
Enum for compression of JS.
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static void
compressHTML(java.io.File inputHTML, java.io.File outputHTML, java.nio.charset.Charset charset)
Compresses HTML.static java.lang.String
compressHTML(java.lang.String html)
Compresses HTML.static Compressor
getInstance(java.io.File root)
Returns the singleton of the compressor.void
invokeCSSCompressor(java.io.File inputCSS, java.io.File outputCSS)
Compresses a single CSS file.void
invokeCSSCompressor(java.io.File currDir, java.io.File outputCSS, java.util.List<java.lang.String> files)
Invokes the CSS compressor in the specified directory.java.io.File
invokeCSSCompressor(java.io.File htmlFile, java.util.List<java.lang.String> files)
Invokes the CSS Closure Sheets compressor and returns the output.void
invokeJSCompressor(java.io.File inputJS, java.io.File outputJS, Compressor.Level optimizeLevel)
Compresses a single JS file.void
invokeJSCompressor(java.io.File currDir, java.io.File outputJS, Compressor.Level optimizeLevel, java.util.List<java.lang.String> files)
Invokes the JS compressor in the specified current directory.java.io.File
invokeJSCompressor(java.io.File htmlFile, java.util.List<java.lang.String> files, Compressor.Level optimizeLevel)
Invokes the Google Closure Compiler and returns the output.
Method Detail
getInstance
public static Compressor getInstance(java.io.File root) throws java.io.IOException
Returns the singleton of the compressor.- Parameters:
root
- The root for the webserver, i.e. "js/root" in this project.- Returns:
- The compressor.
- Throws:
java.io.IOException
- If the compressor is not found.
invokeCSSCompressor
public java.io.File invokeCSSCompressor(java.io.File htmlFile, java.util.List<java.lang.String> files) throws java.io.IOException
Invokes the CSS Closure Sheets compressor and returns the output.Command line options:
--allow-unrecognized-functions : Allow unrecognized functions. --allow-unrecognized-properties : Allow unrecognized properties. --allowed-non-standard-function VAL : Specify a non-standard function to whitelist, like alpha() --allowed-unrecognized-property VAL : Specify an unrecognized property to whitelist --copyright-notice VAL : Copyright notice to prepend to the output --define VAL : Specifies the name of a true condition. The condition name can be used in @if boolean expressions. The conditions are ignored if GSS extensions are not enabled. --excluded-classes-from-renaming VAL : Pass the compiler a list of CSS class names that shoudn't be renamed. --gss-function-map-provider VAL : The fully qualified class name of a map provider of custom GSS functions to resolve. --input-orientation [LTR | RTL] : This specifies the display orientation the input files were written for. You can choose between: LTR, RTL. LTR is the default and means that the input style sheets were designed for use with left to right display User Agents. RTL sheets are designed for use with right to left UAs. Currently, all input files must have the same orientation, as there is no way to specify the orientation on a per-file or per-library basis. --output-file (-o) VAL : The output CSS filename. If empty, standard output will be used. The output is always UTF-8 encoded. --output-orientation [LTR | RTL | NOCHANGE] : Specify this option to perform automatic right to left conversion of the input. You can choose between: LTR, RTL, NOCHANGE. NOCHANGE means the input will not be changed in any way with respect to direction issues. LTR outputs a sheet suitable for left to right display and RTL outputs a sheet suitable for right to left display. If the input orientation is different than the requested output orientation, 'left' and 'right' values in direction sensitive style rules are flipped. If the input already has the desired orientation, this option effectively does nothing except for defining GSS_LTR and GSS_RTL, respectively. The input is LTR by default and can be changed with the input_orientation flag. --output-renaming-map VAL : The output from the CSS class renaming. Provides a map of class names to what they were renamed to. --output-renaming-map-format [CLOSURE_COMPILED | CLOSURE_UNCOMPILED | JSON | PROPERTIES] : How to format the output from the the CSS class renaming. --pretty-print : Whether to format the output with newlines and indents so that it is more readable. --rename [NONE | DEBUG | CLOSURE] : How CSS classes should be renamed. Defaults to NONE. --vendor [WEBKIT | MOZILLA | MICROSOFT | OPERA | KONQUEROR] : Creates browser-vendor-specific output by stripping all proprietary browser-vendor properties from the output except for those associated with this vendor.
- Parameters:
htmlFile
- The HTML file.files
- The list of files to compress.- Returns:
- The file output, a temporary file that must be deleted to clean-up.
- Throws:
java.io.IOException
- For process errors.
invokeCSSCompressor
public void invokeCSSCompressor(java.io.File inputCSS, java.io.File outputCSS) throws java.io.IOException
Compresses a single CSS file.- Parameters:
inputCSS
- The input CSS file.outputCSS
- The output CSS file.- Throws:
java.io.IOException
- For process errors.
invokeCSSCompressor
public void invokeCSSCompressor(java.io.File currDir, java.io.File outputCSS, java.util.List<java.lang.String> files) throws java.io.IOException
Invokes the CSS compressor in the specified directory.- Parameters:
currDir
- The current directory.outputCSS
- The output CSS file.files
- The list of CSS files.- Throws:
java.io.IOException
- For process errors.
invokeJSCompressor
public java.io.File invokeJSCompressor(java.io.File htmlFile, java.util.List<java.lang.String> files, Compressor.Level optimizeLevel) throws java.io.IOException
Invokes the Google Closure Compiler and returns the output.Options:
--angular_pass : Generate $inject properties for AngularJS for functions annotated with @ngInject --charset VAL : Input and output charset for all files. By default, we accept UTF-8 as input and output US_ASCII --checks-only : Don't generate output. Run checks, but no compiler passes. --closure_entry_point VAL : Entry points to the program. Must be goog.provide'd symbols. Any goog.provide'd symbols that are not a transitive dependency of the entry points will be removed. Files without goog.provides, and their dependencies, will always be left in. If any entry points are specified, then the manage_closure_dependencies option will be set to true and all files will be sorted in dependency order. --common_js_entry_module VAL : Root of your common JS dependency hierarchy. Your main script. --common_js_module_path_prefix VAL : Path prefix to be removed from CommonJS module names. --compilation_level (-O) VAL : Specifies the compilation level to use. Options: WHITESPACE_ONLY, SIMPLE, ADVANCED --conformance_configs VAL : A list of JS Conformance configurations in text protocol buffer format. --create_renaming_reports : If true, variable renaming and property renaming report files will be produced as {binary name}_vars_renaming_report.out and {binary name}_props_renaming_report.out. Note that this flag cannot be used in conjunction with either variable_renaming_report or property_renaming_report --create_source_map VAL : If specified, a source map file mapping the generated source files back to the original source file will be output to the specified path. The %outname% placeholder will expand to the name of the output file that the source map corresponds to. --dart_pass : Rewrite Dart Dev Compiler output to be compiler-friendly. --debug : Enable debugging options --define (--D, -D) VAL : Override the value of a variable annotated @define. The format is [name][=[val]], where [name] is the name of a @define variable and [val] is a boolean, number, or a single-quoted string that contains no single quotes. If [=[val]] is omitted, the variable is marked true --env [BROWSER | CUSTOM] : Determines the set of builtin externs to load. Options: BROWSER, CUSTOM. Defaults to BROWSER. --export_local_property_definitions : Generates export code for local properties marked with @export --externs VAL : The file containing JavaScript externs. You may specify multiple --extra_annotation_name VAL : A whitelist of tag names in JSDoc. You may specify multiple --flagfile VAL : A file containing additional command-line options. --formatting [PRETTY_PRINT | PRINT_INPUT_DELIMITER | SINGLE_QUOTES] : Specifies which formatting options, if any, should be applied to the output JS. Options: PRETTY_PRINT, PRINT_INPUT_DELIMITER, SINGLE_QUOTES --generate_exports : Generates export code for those marked with @export --help : Displays this message on stdout and exit --instrumentation_template VAL : A file containing an instrumentation template. --js VAL : The JavaScript filename. You may specify multiple. The flag name is optional, because args are interpreted as files by default. 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 --js_module_root VAL : Path prefixes to be removed from ES6 & CommonJS modules. --js_output_file VAL : Primary output filename. If not specified, output is written to stdout --jscomp_error VAL : Make the named class of warnings an error. Options: accessControls, ambiguousFunctionDecl, checkEventfulObjectDisposal, checkRegExp, checkTypes, checkVars, conformanceViolations, const, constantProperty, deprecated, deprecatedAnnotations, duplicateMessage, es3, es5Strict, externsValidation, fileoverviewTags, globalThis, inferredConstCheck, internetExplorerChecks, invalidCasts, misplacedTypeAnnotation, missingGetCssName, missingProperties, missingProvide, missingRequire, missingReturn, msgDescriptionsnewCheckTypes, nonStandardJsDocs, reportUnknownTypes, suspiciousCode, strictModuleDepCheck, typeInvalidation, undefinedNames, undefinedVars, unknownDefines, unnecessaryCasts, uselessCode, useOfGoogBase, visibility. '*' adds all supported. --jscomp_off VAL : Turn off the named class of warnings. Options: accessControls, ambiguousFunctionDecl, checkEventfulObjectDisposal, checkRegExp, checkTypes, checkVars, conformanceViolations, const, constantProperty, deprecated, deprecatedAnnotations, duplicateMessage, es3, es5Strict, externsValidation, fileoverviewTags, globalThis, inferredConstCheck, internetExplorerChecks, invalidCasts, misplacedTypeAnnotation, missingGetCssName, missingProperties, missingProvide, missingRequire, missingReturn, msgDescriptionsnewCheckTypes, nonStandardJsDocs, reportUnknownTypes, suspiciousCode, strictModuleDepCheck, typeInvalidation, undefinedNames, undefinedVars, unknownDefines, unnecessaryCasts, uselessCode, useOfGoogBase, visibility. '*' adds all supported. --jscomp_warning VAL : Make the named class of warnings a normal warning. Options: accessControls, ambiguousFunctionDecl, checkEventfulObjectDisposal, checkRegExp, checkTypes, checkVars, conformanceViolations, const, constantProperty, deprecated, deprecatedAnnotations, duplicateMessage, es3, es5Strict, externsValidation, fileoverviewTags, globalThis, inferredConstCheck, internetExplorerChecks, invalidCasts, misplacedTypeAnnotation, missingGetCssName, missingProperties, missingProvide, missingRequire, missingReturn, msgDescriptionsnewCheckTypes, nonStandardJsDocs, reportUnknownTypes, suspiciousCode, strictModuleDepCheck, typeInvalidation, undefinedNames, undefinedVars, unknownDefines, unnecessaryCasts, uselessCode, useOfGoogBase, visibility. '*' adds all supported. --jszip VAL : The JavaScript zip filename. You may specify multiple. --language_in VAL : Sets what language spec that input sources conform. Options: ECMASCRIPT3 (default), ECMASCRIPT5, ECMASCRIPT5_STRICT, ECMASCRIPT6, ECMASCRIPT6_STRICT, ECMASCRIPT6_TYPED (experimental) --language_out VAL : Sets what language spec the output should conform to. If omitted, defaults to the value of language_in. Options: ECMASCRIPT3, ECMASCRIPT5, ECMASCRIPT5_STRICT, ECMASCRIPT6_TYPED (experimental) --logging_level VAL : The logging level (standard java.util.logging.Level values) for Compiler progress. Does not control errors or warnings for the JavaScript code under compilation --manage_closure_dependencies : Automatically sort dependencies so that a file that goog.provides symbol X will always come before a file that goog.requires symbol X. If an input provides symbols, and those symbols are never required, then that input will not be included in the compilation. --module VAL : A JavaScript module specification. The format is [name]:[num-js-files][:[[dep],...][:]]]. Module names must be unique. Each dep is the name of a module that this module depends on. Modules must be listed in dependency order, and JS source files must be listed in the corresponding order. Where --module flags occur in relation to --js flags is unimportant. [num-js-files] may be set to 'auto' for the first module if it has no dependencies. Provide the value 'auto' to trigger module creation from CommonJSmodules. --module_output_path_prefix VAL : Prefix for filenames of compiled JS modules. [module-name].js will be appended to this prefix. Directories will be created as needed. Use with --module --module_wrapper VAL : An output wrapper for a JavaScript module (optional). The format is [name]:[wrapper]. The module name must correspond with a module specified using --module. The wrapper must contain %s as the code placeholder. The %basename% placeholder can also be used to substitute the base name of the module output file. --new_type_inf : Checks for type errors using the new type inference algorithm. --only_closure_dependencies : Only include files in the transitive dependency of the entry points (specified by closure_entry_point). Files that do not provide dependencies will be removed. This supersedes manage_closure_dependencies --output_manifest VAL : Prints out a list of all the files in the compilation. If --manage_closure_dependencies is on, this will not include files that got dropped because they were not required. The %outname% placeholder expands to the JS output file. If you're using modularization, using %outname% will create a manifest for each module. --output_module_dependencies VAL : Prints out a JSON file of dependencies between modules. --output_wrapper VAL : Interpolate output into this string at the place denoted by the marker token %output%. Use marker token %output|jsstring% to do js string escaping on the output. --output_wrapper_file VAL : Loads the specified file and passes the file contents to the --output_wrap per flag, replacing the value if it exists. --polymer_pass : Rewrite Polymer classes to be compiler-friendly. --print_ast : Prints a dot file describing the internal abstract syntax tree and exits --print_pass_graph : Prints a dot file describing the passes that will get run and exits --print_tree : Prints out the parse tree and exits --process_closure_primitives : Processes built-ins from the Closure library, such as goog.require(), goog.provide(), and goog.exportSymbol(). True by default. --process_common_js_modules : Process CommonJS modules to a concatenable form. --process_jquery_primitives : Processes built-ins from the Jquery library, such as jQuery.fn and jQuery.extend() --property_renaming_report VAL : File where the serialized version of the property renaming map produced should be saved --rename_prefix_namespace VAL : Specifies the name of an object that will be used to store all non-extern globals --source_map_format [DEFAULT | V3] : The source map format to produce. Options are V3 and DEFAULT, which are equivalent. --source_map_input VAL : Source map locations for input files, separated by a '|', (i.e. input-file-path|input-source-map) --source_map_location_mapping VAL : Source map location mapping separated by a '|' (i.e. filesystem-path|webserver-path) --summary_detail_level N : Controls how detailed the compilation summary is. Values: 0 (never print summary), 1 (print summary only if there are errors or warnings), 2 (print summary if the 'checkTypes' diagnostic group is enabled, see --jscomp_warning), 3 (always print summary). The default level is 1 --third_party : Check source validity but do not enforce Closure style rules and conventions --tracer_mode [ALL | RAW_SIZE | TIMING_ONLY | OFF] : Shows the duration of each compiler pass and the impact to the compiled output size. Options: ALL, RAW_SIZE, TIMING_ONLY, OFF --transform_amd_modules : Transform AMD to CommonJS modules. --translations_file VAL : Source of translated messages. Currently only supports XTB. --translations_project VAL : Scopes all translations to the specified project.When specified, we will use different message ids so that messages in different projects can have different translations. --use_types_for_optimization : Enable or disable the optimizations based on available type information. Inaccurate type annotations may result in incorrect results. --variable_renaming_report VAL : File where the serialized version of the variable renaming map produced should be saved --version : Prints the compiler version to stdout and exit. --warning_level (-W) [QUIET | DEFAULT | VERBOSE] : Specifies the warning level to use. Options: QUIET, DEFAULT, VERBOSE --warnings_whitelist_file VAL : A file containing warnings to suppress. Each line should be of the form [file-name]:[line-number]? [warning-description]
- Parameters:
htmlFile
- The HTML file.files
- The list of files to compress.- Returns:
- The file output, a temporary file that must be deleted to clean-up.
- Throws:
java.io.IOException
- For process errors.
invokeJSCompressor
public void invokeJSCompressor(java.io.File inputJS, java.io.File outputJS, Compressor.Level optimizeLevel) throws java.io.IOException
Compresses a single JS file.- Parameters:
inputJS
- The input JS file.outputJS
- The output JS file.optimizeLevel
- Optimize level: 0=WHITESPACE_ONLY, 1=SIMPLE, 2=ADVANCED.- Throws:
java.io.IOException
- For process errors.
invokeJSCompressor
public void invokeJSCompressor(java.io.File currDir, java.io.File outputJS, Compressor.Level optimizeLevel, java.util.List<java.lang.String> files) throws java.io.IOException
Invokes the JS compressor in the specified current directory.- Parameters:
currDir
- The current directory.outputJS
- TheoptimizeLevel
- Optimize level: 0=WHITESPACE_ONLY, 1=SIMPLE, 2=ADVANCED.files
- The JS files to compress.- Throws:
java.io.IOException
- For process errors.
compressHTML
public static void compressHTML(java.io.File inputHTML, java.io.File outputHTML, java.nio.charset.Charset charset) throws java.io.IOException
Compresses HTML.- Parameters:
inputHTML
- Input HTML file to compress.outputHTML
- Output HTML file to write compressed HTML into, and can be the same as the inputHTML file in which case the uncompressed contents will be overwritten without question.charset
- The Character set to use, null = UTF-8.- Throws:
java.io.IOException
- For I/O errors.
compressHTML
public static java.lang.String compressHTML(java.lang.String html) throws java.io.IOException
Compresses HTML.- Parameters:
html
- The HTML to compress.- Returns:
- The compressed HTML.
- Throws:
java.io.IOException
- For compression errors or I/O errors.