anchor.diff:  :optimize-constants true
   ----
   
  +[[output-wrapper]]
  +=== :output-wrapper
  +
  +Wrap the Javascript output to avoid clobbering globals. There are four
  +possible value types:
  +
  +1. Function - Takes one argument, the compiled javascript output. Should
  +return some other valid javascript output. For the simplest
  +case, just string concatenate the javascript output with
  +something akin to #3 (the default wrapper)
  +2. String - Some `format` interpolation compatible string. For example,
  +`"(function(){%s};)()"`. `format` receives the compiled
  +javascript output as the second argument and nothing else.
  +3. Truthy - Wrap with the default `(function(){...};)()`
  +4. Falsey - Don't wrap. This is the default.
  +
  +[source,clojure]
  +----
  +;; function
  +(fn [js-output]
  +  (str "(function(){" js-output "};).call(window);"))
  +
  +;; string
  +"(function(){%s};).call(window);"
  +
  +;; truthy
  +true
  +
  +;; falsey
  +false
  +----
  +
  +[[package-json-resolution]]
  +=== :package-json-resolution
  +
  +Configures which `package.json` entries (e.g. `"browser"`, `"module"` or `"main"`)
  +are used in which order when resolving dependencies on (and between) NPM packages.
  +
  +Defaults to
  +
  +* `:nodejs` (`["main"]`) if the `:target` is `:nodejs`
  +* `:webpack` (`["browser", "module", "main"]`) else
  +
  +Can also take a custom vector of entries such as `["browser", "main"]`.
  +
   [[parallel-build]]
   === :parallel-build
   
  
positive.code: :parallel-build true
  ----
  
  [[watch-fn]]
  === :watch-fn
  
  Is a function that will be called after a successful build.
  
  *Only available for `cljs.build.api/watch`*
  
  [source,clojure]
  ----
  :watch-fn (fn [] (println "Updated build"))
  ----
  
  [[process-shim]]
  
negative.code: See the https://github.com/google/closure-compiler/wiki/Warnings[Closure
  Compiler Warning wiki] for detailed descriptions.
  
  [[compiler-stats]]
  === :compiler-stats
  
  Report basic timing measurements on compiler activity.
  
  Defaults to `false`.
  
  [source,clojure]
  ----
  :compiler-stats true
  ----
  
  [[deps-cmd]]
  === :deps-cmd
  
  Set the command to install `node_modules`. Only `"npm"` and `"yarn"` supported.
  
  [source,clojure]
  ----
  :deps-cmd "yarn"
  ----
  
  [[elide-asserts]]
  === :elide-asserts
  
  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.
  
  [NOTE]
  ====
  Note that, with JVM ClojureScript, it is not possible to dynamically set
  `pass:[*assert*]` to false at runtime; this compiler flag must explicitly be
  used to effect the elision. With self-hosted ClojureScript, on the other
  hand, setting `pass:[*assert*]` will cause `asserts` to be elided as in
  Clojure.
  ====
  
  [[elide-strict]]
  === :elide-strict
  
  Whether to elide `use strict` statements in JavaScript output. Defaults to `true`.
  
  [source,clojure]
  ----
  :elide-strict false
  ----
  
  [[fingerprint]]
  === :fingerprint
  
  Defaults to `false`. Whether to enable fingerprinting, which will append a
  content SHA to output file names. An `manifest.edn` is generated to
  `:output-dir` for mapping fingerprinted file names. This is especially useful
  when using `:modules` and `:source-map` options, as the fingerprinted file names
  will be appropriately referenced.
  
  [source,clojure]
  ----
  :fingerprint true
  ----
  
  [[fn-invoke-direct]]
  === :fn-invoke-direct
  
  Requires `:static-fns true`.
  This option emits slightly different code that can speed up your code
  around 10-30%. Higher order function that don't implement the `IFn` protocol
  are normally called with `f.call(null, arg0, arg1 ...)`. With this option
  enabled the compiler calls them with a faster `f(arg0, arg1 ...` instead.
  
  [CAUTION]
  ====
  The `:fn-invoke-direct` feature is in alpha status. For some libraries such
  as Reagent, `:fn-invoke-direct` is known to generate incorrect code.
  ====
  
  [source,clojure]
  ----
  :fn-invoke-direct true
  ----
  
  [source,clojure]
  ----
  :elide-asserts true
  ----
  
  [[hashbang]]
  === :hashbang
  
  When using `:target :nodejs` the compiler will emit a shebang as the
  first line of the compiled source, making it executable. When your
  intention is to build a node.js module, instead of executable, use this
  option to remove the shebang.
  
  [source,clojure]
  ----
  :hashbang false
  ----
  
  [[infer-externs]]
  === :infer-externs
  
  Enables automatically generating externs for interop calls to JavaScript.
  Defaults to `false`. For more info see
  <<xref/../../guides/externs#externs-inference,Externs (Alpha)>>
  
  [source,clojure]
  ----
  :infer-externs true
  ----
  
  [[language-in-and-language-out]]
  === :language-in and :language-out
  
  Configure the input and output languages for the closure library. May be:
  
  * `:ecmascript-next` identical to `:es-next`
  * `:ecmascript-2017` identical to `:es-2017`
  * `:ecmascript-2016` identical to `:es-2016`
  * `:ecmascript-2015` identical to `:es-2015`, `:ecmascript6`, `:es6`, `:ecmascript6-strict`, `:es6-strict`
  * `:ecmascript6-typed` identical to `:es6-typed`
  * `:ecmascript5` identical to `:es5`
  * `:ecmascript5-strict` identical to `:es5-strict`
  * `:ecmascript3` identical to `:es3`
  * `:no-transpile`
  
  `:language-in` defaults to `:ecmascript5`
  `:language-out` defaults to `:no-transpile`
  
  [source,clojure]
  ----
  :language-in  :ecmascript5
  :language-out :no-transpile
  ----
  
  [[libs]]
  === :libs
  
  Adds dependencies on external js libraries, i.e. Google
  Closure-compatible javascript files with correct `goog.provides()` and
  `goog.requires()` calls. Note that files in these directories will be
  watched and a rebuild will occur if they are modified.
  
  Paths or filenames can be given. Relative paths are relative to the
  current working directory (usually project root).
  
  Defaults to the empty vector `[]`
  
  [source,clojure]
  ----
  :libs ["closure/library/third_party/closure"
         "src/js"
         "src/org/example/example.js"]
  ----
  
  [[nodejs-rt]]
  === :nodejs-rt
  
  Flag to disable Node.js runtime support. Useful when not targeting Node.js but
  rather targeting JavaScript tools which understand Node.js style `require`
  conventions
  
  [source,clojure]
  ----
  :nodejs-rt false
  ----
  
  [[optimize-constants]]
  === :optimize-constants
  