         (data/make-closure-compiler)
 
         co-opts
-        (merge
-          ;; :whitespace or :simple work but some patterns really require the DCE done by :simple
-          ;; eg some conditional imports done by react&friends
-          {:pretty-print true
-           :pseudo-names false
-           ;; es6+ is transformed by babel first
-           ;; but closure got real picky and complains about some things being es6 that aren't
-           ;; doesn't really impact much here anyways
-           :language-in :ecmascript-next
-           :language-out :ecmascript5}
-          ;; (dissoc js-options :resolve)
-          ;; always enable source-map, just skip emitting them later if desired
-          {:source-map true})
+        {:pretty-print true
+         :pseudo-names false
+         :language-in :ecmascript-next
+         :language-out :ecmascript5
+         :source-map true}
 
         generate-source-map?
         (not (false? (:source-map js-options)))

        result
        (try
          (util/with-logged-time [state {:type ::goog-convert
                                         :num-sources (count sources)}]
            (.compile cc default-externs source-files closure-opts))
          ;; catch internal closure errors
          (catch Exception e

    [shadow.build.data :as data]
    [shadow.build.npm :as npm]
    [shadow.build.cache :as cache]
    [shadow.core-ext :as core-ext]
    [shadow.build.resource :as rc])
  (:import (java.io StringWriter ByteArrayInputStream FileOutputStream File)
           (com.google.javascript.jscomp JSError SourceFile CompilerOptions CustomPassExecutionTime
                                         CommandLineRunner VariableMap SourceMapInput DiagnosticGroups
