|
878 | 878 | inputs))
|
879 | 879 |
|
880 | 880 | (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." |
883 | 883 | [inputs opts]
|
884 | 884 | (let [requires (set (mapcat deps/-requires inputs))
|
885 | 885 | required-js (js-dependencies opts requires)]
|
|
894 | 894 | [(when (-> @env/*compiler* :options :emit-constants)
|
895 | 895 | (let [url (deps/to-url (str (util/output-directory opts) "/constants_table.js"))]
|
896 | 896 | (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))) |
897 | 903 | inputs)))
|
898 | 904 |
|
899 | 905 | (comment
|
|
1362 | 1368 |
|
1363 | 1369 | (declare foreign-deps-str add-header add-source-map-link)
|
1364 | 1370 |
|
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)))) |
1369 | 1380 |
|
1370 | 1381 | (defn output-main-file [opts]
|
1371 | 1382 | (let [asset-path (or (:asset-path opts)
|
|
1383 | 1394 | "require(path.join(path.resolve(\".\"),\"" asset-path "\",\"goog\",\"bootstrap\",\"nodejs.js\"));\n"
|
1384 | 1395 | "require(path.join(path.resolve(\".\"),\"" asset-path "\",\"cljs_deps.js\"));\n"
|
1385 | 1396 | "goog.global.CLOSURE_UNCOMPILED_DEFINES = " closure-defines ";\n"
|
| 1397 | + (apply str (preloads (:preloads opts))) |
1386 | 1398 | "goog.require(\"" (comp/munge (:main opts)) "\");\n"
|
1387 | 1399 | "goog.require(\"cljs.nodejscli\");\n")))
|
1388 | 1400 | (output-one-file opts
|
1389 | 1401 | (str "var CLOSURE_UNCOMPILED_DEFINES = " closure-defines ";\n"
|
1390 | 1402 | "if(typeof goog == \"undefined\") document.write('<script src=\"" asset-path "/goog/base.js\"></script>');\n"
|
1391 | 1403 | "document.write('<script src=\"" asset-path "/cljs_deps.js\"></script>');\n"
|
1392 | 1404 | "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)) |
1394 | 1406 | "document.write('<script>goog.require(\"" (comp/munge (:main opts))"\");</script>');\n")))))
|
1395 | 1407 |
|
1396 | 1408 | (defn output-modules
|
|
0 commit comments