0

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

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

我想file1.cljs(namespaced as file1.file1) 和file2.cljs(namespaced as file2.file2) 要求required.cljs(namespaced asrequired.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])编译时,我得到了异常:

Caused by: clojure.lang.ExceptionInfo: No such namespace: required.required, could not locate required/required.cljs, required/required.cljc, or Closure namespace "required.required" at line 1 src-cljs/project/file1/file1.cljs

4

1 回答 1

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. 但是你可以在没有projectns 前缀的情况下做到这一点。

您可以在lein-cljsbuild的简单示例项目中找到这个简单布局的示例

查看 cljsbuild 自述文件,您似乎走的是"Multiple build configurations"的道路。在实践中,这主要用于为您的主代码和针对该代码工作的测试提供单独的构建配置文件。这在高级示例中显示。

于 2015-08-10T14:00:28.443 回答