|
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