【问题标题】:Project organization and cljsbuild config to require namespace项目组织和 cljsbuild 配置需要命名空间
【发布时间】:2015-10-31 00:11:11
【问题描述】:

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

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

我希望file1.cljs(命名空间为file1.file1)和file2.cljs(命名空间为file2.file2)要求required.cljs(命名空间为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]) 并编译时,我得到了异常:

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

【问题讨论】:

    标签: compilation leiningen clojurescript cljsbuild


    【解决方案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 README,您似乎走的是"Multiple build configurations" 的路径。在实践中,这主要用于为您的主代码和针对该代码工作的测试提供单独的构建配置文件。这在advanced example 中显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 2013-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      相关资源
      最近更新 更多