输出单独的js文件,但与leiningen共享一些代码?

时间:2014-12-31 17:41:34

标签: clojure leiningen clojurescript

我对如何最好地为我的用例设置project.clj感到困惑。

我们正在尝试将新技术嵌入到旧版中,因此我们使用cljs创建单独的页面并将它们嵌入到我们的旧应用程序中(因此,不是"单页应用程序" )。因此,理想情况下,一个页面的javascript将与另一个页面分开。第X页的javascript不包含Page Y的javascript,除了它们之间常见的任何功能。

我真的不确定如何在project.clj中设置它。想象一下,我们在" util"中有一些常见的实用程序。命名空间," page-x"中的Page X的一些代码;命名空间和" page-y"中的页面Y的代码命名空间。在不重复代码的情况下设置它的最佳方法是什么?有可能吗?

我想目录结构可能如下所示:

src/cljs/util/...
src/cljs/page-x/...
src/cljs/page-y/...

也许如果我为Page X构建设置:source-paths["src/cljs/util", "src/cljs/page-x"],并使用page-y进行Page Y构建?只需根据需要在数组中包含公共代码?也许是这样的事情:

:page-x {
  :source-paths ["src/cljs/util", "src/cljs/page-x"]
  :compiler {
     :output-to "dist/js/page-x.min.js"
     :optimizations :advanced}}

:page-y {
  :source-paths ["src/cljs/util", "src/cljs/page-y"]
  :compiler {
     :output-to "dist/js/page-y.min.js"
     :optimizations :advanced}}

我一直在搞乱,但我想我会在这样做的时候抛弃这个问题。

编辑:命名空间与上述想法有关。例如,我有src/cljs/util/util.cljssrc/cljs/page-x/main.cljs。我认为约定是文件的命名空间是它所在的目录,但如果src/cljs/util:source-paths中指定的目录,它就是根,所以没有我可以告诉我的util.cljs的命名空间。当leiningen运行时,这会让我发出一些可爱的ERROR - required "util.util" namespace never provided消息。

1 个答案:

答案 0 :(得分:0)

据我所知,编译器现在只能用于输出单个文件,所以现在没有代码拆分/公共共享代码包。

跟踪jira问题:http://dev.clojure.org/jira/browse/CLJS-848