cljs.repl/load-file
function | since v0.0-927 | Edit |
(load-file repl-env f)
(load-file repl-env f opts)
(defn load-file
([repl-env f] (load-file repl-env f *repl-opts*))
([repl-env f opts]
(if (:output-dir opts)
(let [src (cond
(util/url? f) f
(.exists (io/file f)) (io/file f)
:else (io/resource f))
compiled (binding [ana/*reload-macros* true]
(cljsc/handle-js-modules opts
(deps/dependency-order
(cljsc/add-dependency-sources [(ana/parse-ns src)] opts))
env/*compiler*)
(cljsc/compile src
(assoc opts
:output-file (cljsc/src-file->target-file src)
:force true
:mode :interactive)))]
(when-let [ns (and (:source-map opts) (first (:provides compiled)))]
(spit
(io/file (io/file (util/output-directory opts))
(util/ns->relpath ns (util/ext (:source-url compiled))))
(slurp src)))
(let [sources (load-dependencies repl-env (:requires compiled) opts)]
(load-cljs-loader repl-env (conj sources compiled) opts))
(-evaluate repl-env f 1 (cljsc/add-dep-string opts compiled))
(-evaluate repl-env f 1
(cljsc/src-file->goog-require src
{:wrap true :reload true :macros-ns (:macros-ns compiled)})))
(binding [ana/*cljs-ns* ana/*cljs-ns*]
(let [res (if (= File/separatorChar (first f)) f (io/resource f))]
(assert res (str "Can't find " f " in classpath"))
(load-stream repl-env f res))))))