Skip to content
Snippets Groups Projects
Commit fb5d4a88 authored by Braden Shepherdson's avatar Braden Shepherdson Committed by Braden Shepherdson
Browse files

Fix exclusion of CLJS devtools from release builds

The new approach uses a dev-mode-only CLJC reader conditional
`#?(:cljs-dev ...)` to make `metabase.util.devtools` empty
except in dev builds.

The previous approach for this relied on dead code elimination.
But DCE relies on tracing function calls and `:require`s from the
`:entries` list in shadow-cljs.edn. Top-level namespace code is
handled differently; in particular a namespace listed in `:entries`
like `metabase.util.devtools` will always have its top-level code
in the build.
parent 28b00a04
No related branches found
No related tags found
No related merge requests found
......@@ -11,7 +11,9 @@
{:app
{:target :npm-module
:output-dir "frontend/src/cljs_release/"
:dev {:output-dir "frontend/src/cljs/"}
:dev {:output-dir "frontend/src/cljs/"
:compiler-options {:reader-features #{:cljs-dev}}}
:compiler-options {:reader-features #{:cljs-release}}
:entries [metabase.domain-entities.queries.util
metabase.mbql.js
metabase.types
......
(ns metabase.util.devtools
"Preload magic to load cljs-devtools. Only imported by dev.js in dev mode; no-op in production."
;; This special context is defined only for dev-mode shadow-cljs builds; see shadow-cljs.edn
;; In release builds, and JVM Clojure, this file is an empty namespace.
#?(:cljs-dev (:require
[devtools.core :as devtools])))
#?(:cljs-dev
(do
;; The advanced mode check is busted, it always assumes Webpack is advanced.
;; The reader conditionals empty this file in release builds, plus it's only required
;; from frontend/src/metabase/dev.js, which is replaced with dev-noop.js in release mode.
(devtools/set-pref! :disable-advanced-mode-check true)
(devtools/install!)
(js/console.log "CLJS Devtools loaded")))
(ns metabase.util.devtools
"Preload magic to load cljs-devtools. Only imported by dev.js in dev mode; no-op in production."
(:require
[devtools.core :as devtools]))
;; The advanced mode check is busted, it always assumes Webpack is advanced.
;; This entire file is skipped for release builds; it's only required from frontend/src/metabase/dev.js
(devtools/set-pref! :disable-advanced-mode-check true)
(devtools/install!)
(js/console.log "CLJS Devtools loaded")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment