项目组织和cljsbuild配置需要命名空间

时间:2015-08-07 14:00:33

标签: compilation leiningen clojurescript cljsbuild

如何组织我的项目结构并将cljsbuild配置为需要我自己的命名空间?例如,在我的project/src-cljs文件夹中:

└── project
    ├── file1
    │   └── file1.cljs
    ├── file2
    │   └── file2.cljs
    └─── required
        └── required.cljs

我希望file1.cljs(命名为file1.file1)和file2.cljs(命名为file2.file2)要求required.cljs(命名空间为{{ 1}})。

我的required.required看起来像是:

:cljsbuild

当我:cljsbuild {:builds [{:source-paths ["src-cljs/project/file1"] :compiler {:output-to "resources/public/js/file1.js"}} {:source-paths ["src-cljs/project/file2"] :compiler {:output-to "resources/public/js/file2.js"}}]} 并编译时,我得到了异常:

(:require [required.required :as required])

1 个答案:

答案 0 :(得分:1)

您通常不希望每个命名空间都有单独的js输出文件和cljsbuild配置文件。您需要一个包含所有命名空间的cljsbuild配置文件。类似的东西:

:cljsbuild {:builds
            [{:source-paths ["src-cljs/project"]
              :compiler {:output-to "resources/public/js/project.js"}}]}

不仅如此:您可能希望[" src-cljs"]为:source-paths,然后将您的命名空间命名为project.ns1.sub-ns1。但是你可以在没有project ns前缀的情况下做到这一点。

您可以在lein-cljsbuild的simple example project中找到这个简单布局的示例

期待cljsbuild自述文件,您似乎走的是"Multiple build configurations"的路径。实际上,这主要用于为主代码和针对该代码的测试提供单独的构建配置文件。这显示在advanced example