Skip to content

Commit d187ad7

Browse files
author
dnolen
committed
CLJS-1688: :preloads compiler option for loading other entry points prior to :main
handle :preloads in add-js-sources, handle Node.js
1 parent 57c8a75 commit d187ad7

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

src/main/clojure/cljs/closure.clj

+19-7
Original file line numberDiff line numberDiff line change
@@ -878,8 +878,8 @@
878878
inputs))
879879

880880
(defn add-js-sources
881-
"Given list of IJavaScript objects, add foreign-deps and constants-table
882-
IJavaScript objects to the list."
881+
"Given list of IJavaScript objects, add foreign-deps, constants-table, and
882+
preloads IJavaScript objects to the list."
883883
[inputs opts]
884884
(let [requires (set (mapcat deps/-requires inputs))
885885
required-js (js-dependencies opts requires)]
@@ -894,6 +894,12 @@
894894
[(when (-> @env/*compiler* :options :emit-constants)
895895
(let [url (deps/to-url (str (util/output-directory opts) "/constants_table.js"))]
896896
(javascript-file nil url url ["constants-table"] ["cljs.core"] nil nil)))]
897+
(remove nil?
898+
(map (fn [preload]
899+
(if-let [uri (:uri (cljs-source-for-namespace preload))]
900+
(-compile uri opts)
901+
(util/debug-prn "WARNING: preloads namespace" preload "does not exist")))
902+
(:preloads opts)))
897903
inputs)))
898904

899905
(comment
@@ -1362,10 +1368,15 @@
13621368

13631369
(declare foreign-deps-str add-header add-source-map-link)
13641370

1365-
(defn preloads [syms]
1366-
(letfn [(preload-str [sym]
1367-
(str "document.write('<script>goog.require(\"" (comp/munge sym) "\");</script>');\n"))]
1368-
(map preload-str syms)))
1371+
(defn preloads
1372+
([syms]
1373+
(preloads syms nil))
1374+
([syms mode]
1375+
(letfn [(preload-str [sym]
1376+
(str (when (= :browser mode) "document.write('<script>")
1377+
"goog.require(\"" (comp/munge sym) "\");"
1378+
(if (= :browser mode) "</script>');\n" "\n")))]
1379+
(map preload-str syms))))
13691380

13701381
(defn output-main-file [opts]
13711382
(let [asset-path (or (:asset-path opts)
@@ -1383,14 +1394,15 @@
13831394
"require(path.join(path.resolve(\".\"),\"" asset-path "\",\"goog\",\"bootstrap\",\"nodejs.js\"));\n"
13841395
"require(path.join(path.resolve(\".\"),\"" asset-path "\",\"cljs_deps.js\"));\n"
13851396
"goog.global.CLOSURE_UNCOMPILED_DEFINES = " closure-defines ";\n"
1397+
(apply str (preloads (:preloads opts)))
13861398
"goog.require(\"" (comp/munge (:main opts)) "\");\n"
13871399
"goog.require(\"cljs.nodejscli\");\n")))
13881400
(output-one-file opts
13891401
(str "var CLOSURE_UNCOMPILED_DEFINES = " closure-defines ";\n"
13901402
"if(typeof goog == \"undefined\") document.write('<script src=\"" asset-path "/goog/base.js\"></script>');\n"
13911403
"document.write('<script src=\"" asset-path "/cljs_deps.js\"></script>');\n"
13921404
"document.write('<script>if (typeof goog == \"undefined\") console.warn(\"ClojureScript could not load :main, did you forget to specify :asset-path?\");</script>');\n"
1393-
(apply str (preloads (:preloads opts)))
1405+
(apply str (preloads (:preloads opts) :browser))
13941406
"document.write('<script>goog.require(\"" (comp/munge (:main opts))"\");</script>');\n")))))
13951407

13961408
(defn output-modules

0 commit comments

Comments
 (0)