File tree 5 files changed +55
-5
lines changed
5 files changed +55
-5
lines changed Original file line number Diff line number Diff line change 41
41
[cljs.env :as env]
42
42
[cljs.js-deps :as deps]
43
43
[clojure.java.io :as io]
44
+ [clojure.set :as set]
44
45
[clojure.string :as string]
45
46
[clojure.data.json :as json])
46
47
(:import [java.io File BufferedInputStream StringWriter]
725
726
(find-cljs-dependencies [" cljs.core" " clojure.string" ])
726
727
)
727
728
729
+ (defn- module-entries
730
+ " Return the module entries of `compile-opts` as a set."
731
+ [compile-opts]
732
+ (->> compile-opts :modules vals
733
+ (map :entries )
734
+ (remove nil?)
735
+ (apply concat)
736
+ (set )))
737
+
728
738
(defn add-dependency-sources
729
739
" Given list of IJavaScript objects, produce a new sequence of IJavaScript objects
730
740
of all dependencies of inputs."
731
- [inputs]
732
- (let [inputs (set inputs)
733
- requires (set (mapcat deps/-requires inputs))]
734
- (into inputs (find-cljs-dependencies requires))))
741
+ ([inputs]
742
+ (add-dependency-sources inputs nil ))
743
+ ([inputs compile-opts]
744
+ (let [inputs (set inputs)
745
+ requires (set (mapcat deps/-requires inputs))
746
+ module-entries (module-entries compile-opts)]
747
+ (into inputs (find-cljs-dependencies (set/union requires module-entries))))))
735
748
736
749
(defn check-unprovided
737
750
[inputs]
1850
1863
(assoc all-opts :output-file (:output-to all-opts))
1851
1864
all-opts)
1852
1865
js-sources (-> (-find-sources source all-opts)
1853
- add-dependency-sources
1866
+ ( add-dependency-sources compile-opts)
1854
1867
deps/dependency-order
1855
1868
(compile-sources compiler-stats compile-opts)
1856
1869
(add-js-sources all-opts)
Original file line number Diff line number Diff line change
1
+ (ns module-test.main )
2
+
3
+ (defn ^:export main []
4
+ (println " Loading modules A and B ..." ))
Original file line number Diff line number Diff line change
1
+ (ns module-test.modules.a )
2
+
3
+ (defn ^:export main []
4
+ (println " Module A loaded." ))
Original file line number Diff line number Diff line change
1
+ (ns module-test.modules.b )
2
+
3
+ (defn ^:export main []
4
+ (println " Module B loaded." ))
Original file line number Diff line number Diff line change 120
120
(build srcs opts)
121
121
(is (not (every? #(zero? (.length %)) [common-tmp app-tmp]))
122
122
" The files are not empty after compilation" )))
123
+
124
+ (deftest cljs-1500-test-modules
125
+ (let [module-main (io/file " out/module-main.js" )
126
+ module-a (io/file " out/module-a.js" )
127
+ module-b (io/file " out/module-b.js" )]
128
+ (.delete module-main)
129
+ (.delete module-a)
130
+ (.delete module-b)
131
+ (build
132
+ (inputs " src/test/cljs" )
133
+ {:main " module-test.main"
134
+ :optimizations :advanced
135
+ :verbose true
136
+ :modules
137
+ {:cljs-base
138
+ {:output-to (str module-main)}
139
+ :module-a
140
+ {:output-to (str module-a)
141
+ :entries #{'module-test.modules.a}}
142
+ :module-b
143
+ {:output-to (str module-b)
144
+ :entries #{'module-test.modules.b}}}})
145
+ (is (re-find #"Loading modules A and B" (slurp module-main)))
146
+ (is (re-find #"Module A loaded" (slurp module-a)))
147
+ (is (re-find #"Module B loaded" (slurp module-b)))))
You can’t perform that action at this time.
0 commit comments