-
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 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
In advanced mode, determines whether final minification is done. 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)