UNPKG

grunt-closure-coffee-stack

Version:

Everything you need for Google Closure. Precise configuration, Soy templates, localization, TDD stack, and even CoffeeScript support. File watcher included.

301 lines (291 loc) 19.3 kB
/* * grunt-este * https://github.com/este/grunt-este * * esteCompiler: * options: * compilerPath: 'bower_components/closure-compiler/compiler.jar' * client: * options: * js_output_file: 'test_compiled.js' * js: 'test.js' * warning_level: 'VERBOSE' * compilation_level: 'ADVANCED_OPTIMIZATIONS' * * Copyright (c) 2013 Daniel Steigerwald */ module.exports = function (grunt) { grunt.registerMultiTask('compiler', 'Simple Google Closure Compiler wrapper', function () { var options = this.options({ compilerPath: './bower_components/closure-compiler/compiler.jar', js_output_file: './test_compiled.js', warning_level: 'VERBOSE' // All available options are at the end of the page. }); var args = ['-jar', options.compilerPath]; delete options.compilerPath; for (var option in options) { value = options[option]; if (value === true) { args.push('--' + option); continue; } if (!Array.isArray(value)) value = [value]; for (var i = 0; i < value.length; i++) args.push('--' + option + '=' + value[i]); } this.filesSrc.forEach(function(src) { args.push('--js=' + src); }); var done = this.async(); var onSpawnDone = function(error, result, code) { if (error) { grunt.log.error(error); done(false); } else { if (options.js_output_file) { grunt.log.writeln('File ' + options.js_output_file + ' created.'); } done(); } }; grunt.util.spawn({ cmd: 'java', args: args }, onSpawnDone); } ); }; // --accept_const_keyword : Allows usage of const keyword. // --charset VAL : Input and output charset for all // files. By default, we accept UTF-8 as // input and output US_ASCII // --closure_entry_point VAL : Entry points to the program. Must be // goog.provide'd symbols. Any goog.provi // de'd symbols that are not a transitive // dependency of the entry points will // be removed. Files without goog.provide // s, 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 [WHITESPACE_ONLY : Specifies the compilation level to // | SIMPLE_OPTIMIZATIONS | ADVANCED_OPTI : use. Options: WHITESPACE_ONLY, // MIZATIONS] : SIMPLE_OPTIMIZATIONS, ADVANCED_OPTIMIZ // ATIONS // --create_name_map_files : If true, variable renaming and // property renaming map files will be // produced as {binary name}_vars_map.out // and {binary name}_props_map.out. Note // that this flag cannot be used in // conjunction with either variable_map_o // utput_file or property_map_output_file // --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. // --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-quot // ed string that contains no single // quotes. If [=<val>] is omitted, the // variable is marked true // --externs VAL : The file containing JavaScript // externs. You may specify multiple // --flagfile VAL : A file containing additional command-l // ine options. // --formatting [PRETTY_PRINT | PRINT_INP : Specifies which formatting options, // UT_DELIMITER | SINGLE_QUOTES] : 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 // --js VAL : The JavaScript filename. You may // specify multiple // --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, cast, checkRegE // xp, checkTypes, checkVars, const, // constantProperty, deprecated, // duplicateMessage, es5Strict, externsVa // lidation, fileoverviewTags, globalThis // , internetExplorerChecks, invalidCasts // , misplacedTypeAnnotation, missingProp // erties, nonStandardJsDocs, suspiciousC // ode, strictModuleDepCheck, typeInvalid // ation, undefinedNames, undefinedVars, // unknownDefines, uselessCode, visibilit // y // --jscomp_off VAL : Turn off the named class of warnings. // Options:accessControls, ambiguousFunct // ionDecl, cast, checkRegExp, checkTypes // , checkVars, const, constantProperty, // deprecated, duplicateMessage, // es5Strict, externsValidation, // fileoverviewTags, globalThis, // internetExplorerChecks, invalidCasts, // misplacedTypeAnnotation, missingProper // ties, nonStandardJsDocs, suspiciousCod // e, strictModuleDepCheck, typeInvalidat // ion, undefinedNames, undefinedVars, // unknownDefines, uselessCode, visibilit // y // --jscomp_warning VAL : Make the named class of warnings a // normal warning. Options:accessControls // , ambiguousFunctionDecl, cast, // checkRegExp, checkTypes, checkVars, // const, constantProperty, deprecated, // duplicateMessage, es5Strict, externsVa // lidation, fileoverviewTags, globalThis // , internetExplorerChecks, invalidCasts // , misplacedTypeAnnotation, missingProp // erties, nonStandardJsDocs, suspiciousC // ode, strictModuleDepCheck, typeInvalid // ation, undefinedNames, undefinedVars, // unknownDefines, uselessCode, visibilit // y // --language_in VAL : Sets what language spec that input // sources conform. Options: ECMASCRIPT3 // (default), ECMASCRIPT5, ECMASCRIPT5_ST // RICT // --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 compilatio // n. // --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. // 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 placeholde // r. The %basename% placeholder can // also be used to substitute the base // name of the module output file. // --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 supersedesmanage // _closure_dependencies // --output_manifest VAL : Prints out a list of all the files in // the compilation. If --manage_closure_d // ependencies 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. // --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( // ) // --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_map_input_file VAL : File containing the serialized // version of the property renaming map // produced by a previous compilation // --property_map_output_file VAL : File where the serialized version of // the property renaming map produced // should be saved // --source_map_format [V1 | DEFAULT | : The source map format to produce. // V2 | V3] : Options: V1, V2, V3, DEFAULT. DEFAULT // produces V2. // --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 type checking is // on, see --check_types), 3 (always // print summary). The default level is 1 // --third_party : Check source validity but do not // enforce Closure style rules and // conventions // --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_only_custom_externs : Specifies whether the default externs // should be excluded // --use_types_for_optimization : Experimental: perform additional // optimizations based on available // information. Inaccurate type // annotations may result in incorrect // results. // --variable_map_input_file VAL : File containing the serialized // version of the variable renaming map // produced by a previous compilation // --variable_map_output_file VAL : File where the serialized version of // the variable renaming map produced // should be saved // --version : Prints the compiler version to stderr. // --warning_level [QUIET | DEFAULT | : Specifies the warning level to use. // VERBOSE] : 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-d // escription>