Note: This package is now deprecated. Distribution of the JavaScript version has been moved to the main npm distribution at https://www.npmjs.com/package/google-closure-compiler. This package will continue
to work, but no new versions of the package will be published.
Check, compile, transpile, optimize and compress JavaScript with Closure Compiler in JS.
This repo tracks issues related to the publication to npmjs.org and associated plugins.
Any bugs not related to the plugins themselves should be reported to the main repository.
Unlike other packages, this allows Closure Compiler to run entirely in JS.
Java is not required.
This is an experimental release - meaning some features are not available and performance may not be on-par with the Java implementation - details here.
yarn add google-closure-compiler-js --dev # or
npm install --save-dev google-closure-compiler-js
The module supports modern web browsers as well as Node v4 LTS, and provides compile as a low-level method to compile JavaScript.
By default, this compiles ES6 to ES5 and includes the default set of ECMAScript externs files.
For example:
const compile = require('google-closure-compiler-js').compile;
const flags = {
jsCode: [{src: 'const x = 1 + 2;'}],
};
const out = compile(flags);
console.info(out.compiledCode); // will print 'var x = 3;\n'
Or to install the command-line version, do:
npm install -g google-closure-compiler-js
You should now be able to run google-closure-compiler-js as a command.
The google-closure-compiler-js command can read from stdin or from a file.
For example:
google-closure-compiler-js code.js > minified.js
Run google-closure-compiler-js --help for full usage information.
const compiler = require('google-closure-compiler-js').gulp();
gulp.task('script', function() {
return gulp.src('./path/to/src.js', {base: './'})
// your other steps here
.pipe(compiler({
compilationLevel: 'SIMPLE',
warningLevel: 'VERBOSE',
outputWrapper: '(function(){\n%output%\n}).call(this)',
jsOutputFile: 'output.min.js', // outputs single file
createSourceMap: true,
}))
.pipe(gulp.dest('./dist'));
});
Flags
Flag
Default
Usage
angularPass
false
Generate $inject properties for AngularJS for functions annotated with @ngInject
applyInputSourceMaps
true
Compose input source maps into output source map
assumeFunctionWrapper
false
Enable additional optimizations based on the assumption that the output will be wrapped with a function wrapper. This flag is used to indicate that “global” declarations will not actually be global but instead isolated to the compilation unit. This enables additional optimizations.
checksOnly
false
Don’t generate output. Run checks, but no optimization passes.
compilationLevel
SIMPLE
Specifies the compilation level to use. Options: WHITESPACE_ONLY, SIMPLE, ADVANCED
dartPass
false
defines
null
Overrides the value of variables annotated with @define, an object mapping names to primitive types
env
BROWSER
Determines the set of builtin externs to load. Options: BROWSER, CUSTOM
exportLocalPropertyDefinitions
false
generateExports
false
Generates export code for those marked with @export.
languageIn
ES6
Sets what language spec that input sources conform to.
languageOut
ES5
Sets what language spec the output should conform to.
newTypeInf
false
Checks for type errors using the new type inference algorithm.
outputWrapper
null
Interpolate output into this string, replacing the token %output%
polymerVersion
null
Specify the Polymer version pass to use.
preserveTypeAnnotations
false
processCommonJsModules
false
Process CommonJS modules to a concatenable form, i.e., support require statements.
renamePrefixNamespace
Specifies the name of an object that will be used to store all non-extern globals.
rewritePolyfills
true
Rewrite ES6 library calls to use polyfills provided by the compiler’s runtime.
useTypesForOptimization
false
Enable or disable the optimizations based on available type information. Inaccurate type annotations may result in incorrect results.
warningLevel
DEFAULT
Specifies the warning level to use. Options: QUIET, DEFAULT, VERBOSE
jsCode
[]
Specifies the source code to compile.
externs
[]
Additional externs to use for this compile.
createSourceMap
false
Generates a source map mapping the generated source file back to its original sources.
Languages
The Closure Compiler supports the following languages:
ECMASCRIPT3, ECMASCRIPT5 and ECMASCRIPT5_STRICT
ECMASCRIPT6 and ECMASCRIPT6_STRICT
ECMASCRIPT6_TYPED (experimental)
ECMASCRIPT_2017 (experimental)
Source Code
Unless you’re using Gulp’s or Webpack’s plugins, you’ll need to specify code via flags:
Both jsCode and externs accept an array containing objects in the form {src, path, sourceMap}.
Using path you can construct a virtual filesystem for use with ES6 or CommonJS imports — although for CommonJS you’ll have to set processCommonJsModules: true.
Transpilation
The JavaScript version of the Closure-Compiler is transpiled by GWT from the Java source.
For more details on the differences in behavior see the super sourced files in the main
repository.
Licensed under the Apache License, Version 2.0 (the “License”);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an “AS IS” BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
closure-compiler-js
Note: This package is now deprecated. Distribution of the JavaScript version has been moved to the main npm distribution at https://www.npmjs.com/package/google-closure-compiler. This package will continue to work, but no new versions of the package will be published.
Check, compile, transpile, optimize and compress JavaScript with Closure Compiler in JS.
This repo tracks issues related to the publication to npmjs.org and associated plugins. Any bugs not related to the plugins themselves should be reported to the main repository.
Unlike other packages, this allows Closure Compiler to run entirely in JS. Java is not required.
This is an experimental release - meaning some features are not available and performance may not be on-par with the Java implementation - details here.
Usage
These instructions will continue to work, but the package is deprecated. Development has moved to https://www.npmjs.com/package/google-closure-compiler.
First, install the latest version:
The module supports modern web browsers as well as Node v4 LTS, and provides
compileas a low-level method to compile JavaScript. By default, this compiles ES6 to ES5 and includes the default set of ECMAScript externs files. For example:Or to install the command-line version, do:
You should now be able to run
google-closure-compiler-jsas a command. Thegoogle-closure-compiler-jscommand can read from stdin or from a file. For example:Run
google-closure-compiler-js --helpfor full usage information.Build Systems
Webpack
Your
webpack.config.jsshould look like this:Gulp
Your
gulpfile.jsshould contain a task like this:Flags
Options: WHITESPACE_ONLY, SIMPLE, ADVANCED
@define, an object mapping names to primitive typesOptions: BROWSER, CUSTOM
%output%requirestatements.Options: QUIET, DEFAULT, VERBOSE
Languages
The Closure Compiler supports the following languages:
ECMASCRIPT3,ECMASCRIPT5andECMASCRIPT5_STRICTECMASCRIPT6andECMASCRIPT6_STRICTECMASCRIPT6_TYPED(experimental)ECMASCRIPT_2017(experimental)Source Code
Unless you’re using Gulp’s or Webpack’s plugins, you’ll need to specify code via flags:
jsCodeandexternsaccept an array containing objects in the form{src, path, sourceMap}.pathyou can construct a virtual filesystem for use with ES6 or CommonJS imports — although for CommonJS you’ll have to setprocessCommonJsModules: true.Transpilation
The JavaScript version of the Closure-Compiler is transpiled by GWT from the Java source. For more details on the differences in behavior see the super sourced files in the main repository.
Version History
Closure Compiler release notes can be found on the main repository wiki.
License
Copyright © 2017 The Closure Compiler Authors
Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.