-
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
- :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
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)