Компилировать несколько cljs-файлов в независимые js-файлы

Редактировать: Если кто-то пытается создать независимые cljs/js-файлы для одного проекта: это работает именно так, как описано ниже. Вам просто нужно убедиться, что каталоги cljs содержат только необходимые файлы - это моя вина, что я непреднамеренно оставил копию другого (неиспользуемого) файла cljs в одном каталоге; хотя это и не указано, оно будет скомпилировано в требуемый файл.

Я использую cljsbuild с несколькими сборками для создания двух разных файлов cljs/js на одной странице. Между этими файлами нет никаких зависимостей, и они используют разные пространства имен. Компиляция в расширенном режиме создает два js-файла, причем один из js-файлов включает в себя весь другой - так что один файл становится ненужным.

Есть ли способ создать два полностью независимых js-файла без настройки двух разных проектов?

Часть моего проекта.clj:

:cljsbuild {:builds {:app1 {:source-paths ["src/cljs-app1"]
                          :compiler {:output-to     "resources/public/js/app1.js"
                                     :output-dir    "resources/public/js/out-app1"
                                     :asset-path   "/js/out-app1"
                                     :optimizations :none
                                     :pretty-print  true}}
                   :app2 {:source-paths ["src/cljs-app2"]
                          :compiler {:output-to     "resources/public/js/app2.js"
                                     :output-dir    "resources/public/js/out-app2"
                                     :asset-path   "/js/out-app2"
                                     :optimizations :none
                                     :pretty-print  true}}}}

:profiles {:dev {:cljsbuild {:builds {:app1 {:compiler {:source-map true}}
                                  :app2 {:compiler {:source-map true}}}}}

         :uberjar {:hooks [leiningen.cljsbuild minify-assets.plugin/hooks]
                   :env {:production true}
                   :aot :all
                   :omit-source true
                   :cljsbuild {:jar true
                               :builds {:app1 {:compiler
                                              {:optimizations :advanced
                                               :pretty-print false}}
                                        :app2 {:compiler
                                               {:optimizations :advanced
                                                :pretty-print false}}}}}
       :production {:cljsbuild {}}
       }

person dwarf-vader    schedule 04.04.2015    source источник


Ответы (2)


Нашел кое-что, что может помочь https://github.com/thheller/shadow-build

person sbensu    schedule 12.05.2015

В настоящее время при компиляции каждой из сборок используется объединенный список исходных путей, что может привести к неожиданным включениям/утечкам в результирующих файлах js. Обходной путь — запускать cljsbuild отдельно для каждой сборки:

lein cljsbuild once app1
lein cljsbuild once app2
person Terje Norderhaug    schedule 12.12.2015