Skip to content

Commit bc587aa

Browse files
committed
cleanup switch over to the standard pipeline by adding
cljs.closure/compile-inputs & cljs.closure/compile-ns
1 parent ade19ed commit bc587aa

2 files changed

Lines changed: 28 additions & 10 deletions

File tree

src/main/clojure/cljs/closure.clj

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2656,6 +2656,26 @@
26562656
(util/mkdirs outfile)
26572657
(spit outfile (slurp (io/resource (str "cljs/bootstrap_" target-str ".js")))))))
26582658

2659+
(defn compile-inputs
2660+
[inputs opts]
2661+
(env/ensure
2662+
(let [sources (-> inputs (add-dependency-sources opts))
2663+
opts (handle-js-modules opts sources env/*compiler*)
2664+
sources (-> (remove (comp #{:seed} :type) sources)
2665+
deps/dependency-order
2666+
(compile-sources false opts)
2667+
(#(map add-core-macros-if-cljs-js %))
2668+
(add-js-sources opts) deps/dependency-order
2669+
(->> (map #(source-on-disk opts %)) doall))]
2670+
;; this is an optimization for handle-js-modules
2671+
(swap! env/*compiler* update-in [:options] merge opts)
2672+
sources)))
2673+
2674+
(defn compile-ns
2675+
"Compiles a namespace and all of its transitive dependencies."
2676+
[ns opts]
2677+
(compile-inputs (find-sources ns opts) opts))
2678+
26592679
(defn build
26602680
"Given a source which can be compiled, produce runnable JavaScript."
26612681
([source opts]

src/main/clojure/cljs/repl.cljc

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -196,16 +196,14 @@
196196
only once."
197197
([repl-env ns] (load-namespace repl-env ns nil))
198198
([repl-env ns opts]
199-
(let [ns (if (and (seq? ns) (= (first ns) 'quote)) (second ns)ns)
200-
sources (-> (cljsc/-find-sources ns (merge (env->opts repl-env) opts))
201-
(cljsc/add-dependency-sources opts))
202-
opts (cljsc/handle-js-modules opts sources env/*compiler*)
203-
_ (swap! env/*compiler* update-in [:options] merge opts)
204-
sources (-> sources deps/dependency-order
205-
(cljsc/compile-sources false opts)
206-
(#(map cljsc/add-core-macros-if-cljs-js %))
207-
(cljsc/add-js-sources opts) deps/dependency-order
208-
(->> (map #(cljsc/source-on-disk opts %)) doall))]
199+
(let [ns (if (and (seq? ns) (= (first ns) 'quote)) (second ns) ns)
200+
;; We need to use a seed because many things (npm deps etc.) cannot be
201+
;; *directly* compiled, they must be a part of some ClojureScript ns
202+
;; form - thus we fabricate a seed
203+
sources (->> (cljsc/compile-inputs
204+
[{:requires [(name ns)] :type :seed}]
205+
(merge (env->opts repl-env) opts))
206+
(remove (comp #{["goog"]} :provides)))]
209207
(if (:output-dir opts)
210208
;; REPLs that read from :output-dir just need to add deps,
211209
;; environment will handle actual loading - David

0 commit comments

Comments
 (0)