Skip to content
shaunlebron edited this page Jan 2, 2015 · 136 revisions

Here is list of compiler options that can be passed to the ClojureScript compiler.

:output-to

The path to the JavaScript file that will be output.

:output-to "resources/public/js/main.js"

:output-dir

Sets the output directory for temporary files used during compilation. Defaults to "out".

:output-dir "resources/public/js/out"

:optimizations

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

:source-map

See https://github.com/clojure/clojurescript/wiki/Source-maps

:source-map true

:source-map-timestamp

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

:warnings

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

:elide-asserts

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

:pretty-print

Determines whether the JavaScript output will be tabulated in a human-readable manner. Defaults to true.

:pretty-print true

:pseudo-names

In advanced mode, determines whether final minification is done. Defaults to false.

:pseudo-names true

:print-input-delimiter

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

:target

If targeting nodejs add this line. Takes no other options at the moment.

:target :nodejs

:output-wrapper

Wrap the JavaScript output in (function(){...};)() to avoid clobbering globals. Defaults to true when using advanced compilation, false otherwise.

:output-wrapper false

:externs

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"]

:libs

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"]

:foreign-libs

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"]}]

:preamble

Prepends the contents of the given files to each output file.

Defaults to the empty vector []

:preamble ["license.js"]

:language-in and :language-out

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

:closure-warnings

Configure warnings generated by the Closure compiler.

:closure-warnings {:externs-validation :off}}
Clone this wiki locally