-
Notifications
You must be signed in to change notification settings - Fork 790
Compiler Options
Here is list of compiler options that can be passed to the ClojureScript compiler.
- :output-to
- :output-dir
- :optimizations
- :source-map
- :source-map-timestamp
- :static-fns
- :warnings
- :elide-asserts
- :pretty-print
- :pseudo-names
- :print-input-delimiter
- :target
- :output-wrapper
- :externs
- :libs
- :foreign-libs
- :preamble
- :language-in and :language-out
- :closure-warnings
The path to the JavaScript file that will be output.
:output-to "resources/public/js/main.js"
Sets the output directory for temporary files used during compilation. Defaults to "out".
:output-dir "resources/public/js/out"
The optimization level. May be :none
, :whitespace
, :simple
, or
:advanced
. :none
is the recommended setting for development, while
:advanced
is the recommended setting for production, unless something
prevents it (incompatible external library, bug, etc.).
:none
requires manual code loading and hence a separate HTML from
the other options.
Defaults to :none
.
:optimizations :none
See https://github.com/clojure/clojurescript/wiki/Source-maps
:source-map true
Add cache busting timestamps to source map urls. This is helpful for keeping source maps up to date when live reloading code.
:source-map-timestamp true
Employs static dispatch to specific function arities in emitted JavaScript, as opposed to making use of the call
construct. Defaults to false. Useful to have set to false at REPL development to facilitate function redefinition, and useful to set to true for release for performance.
:static-fns true
This flag will turn on/off compiler warnings for references to undeclared vars, wrong function call arities, etc. Can be a boolean for enabling/disabling common warnings, or a map of specific warning keys with associated booleans. Defaults to true.
:warnings true
;; OR
:warnings {:fn-deprecated false} ;; suppress this warning
This flag will cause all (assert
x )
calls to be removed during compilation,
including implicit assert
s associated with :pre
and :post
conditions.
Useful for production. Default is always false even in advanced compilation.
Does NOT specify goog.asserts.ENABLE_ASSERTS
, which is different and used by
the Closure library.
:elide-asserts true
Determines whether the JavaScript output will be tabulated in a human-readable manner. Defaults to true.
:pretty-print true
With :advanced
mode optimiztions, determines whether final
minification is done. This can be useful when tracking down
a needed extern, or when otherwise attempting to understand
the context of optimized code. Defaults to false.
:pseudo-names true
Determines whether comments will be output in the JavaScript that can be used to determine the original source of the compiled code.
Defaults to false.
:print-input-delimiter false
If targeting nodejs add this line. Takes no other options at the moment.
:target :nodejs
Wrap the JavaScript output in (function(){...};)() to avoid clobbering globals. Defaults to true when using advanced compilation, false otherwise.
:output-wrapper false
Configure externs files for external libraries.
For this option, and those below, you can find a very good explanation at: http://lukevanderhart.com/2011/09/30/using-javascript-and-clojurescript.html
Defaults to the empty vector []
.
:externs ["jquery-externs.js"]
Adds dependencies on external libraries. Note that files in these directories will be watched and a rebuild will occur if they are modified.
Defaults to the empty vector []
:libs ["closure/library/third_party/closure"]
Adds dependencies on foreign libraries. Be sure that the url returns a HTTP Code 200
Defaults to the empty vector []
:foreign-libs [{ :file "http://example.com/remote.js"
:provides ["my.example"]}]
Prepends the contents of the given files to each output file.
Defaults to the empty vector []
:preamble ["license.js"]
Configure the input and output languages for the closure library.
May be :ecmascript3
, ecmascript5
, or ecmascript5-strict
.
Defaults to :ecmascript3
:language-in :ecmascript3
:language-out :ecmascript3
Configure warnings generated by the Closure compiler.
:closure-warnings {:externs-validation :off}}
- Rationale
- Quick Start
- Differences from Clojure
- [Usage of Google Closure](Google Closure)