z1n*_*Y5A 5 leiningen clojurescript cljsbuild
我正在尝试使用lein-cljsbuild编译一些JS库,以将它们集成到我们的ClojureScript代码库中.首先,我在每个文件的顶部添加了一些goog.provide,并且文件根据其命名空间(如Java中)在目录树中按层次结构组织.这就是命名空间abc在src-js/libs/a/b/c.js中
我把JS文件放在src-js/libs项目的根目录中,我有以下内容:lein-cljsbuild的编译器选项:
{:id "prod",
:source-paths ["src-cljs" "src-js"]
:compiler
{:pretty-print false,
:libs ["libs/"]
:output-to "resources/public/js/compiled-app.js",
:optimizations :simple}}
Run Code Online (Sandbox Code Playgroud)
没有JS文件被编译到编译应用程序文件中.怎么了?
我也尝试将它们放在resources/closure-js/libs中但没有成功.
我正在使用lein-cljsbuild 0.3.0.
小智 4
首先,与某些文本中建议的不同,您不需要在 project.clj 的任何类路径配置语句中包含私有闭包库位置。因此,除非“source-paths:”语句中包含的“src/js”目录用于其他目的,否则您可以将其删除。
其次,为了引入您的私有闭包代码,唯一要添加到您的project.clj 中的是您所做的“libs:”引用;但与您输入的内容不同,该引用必须是特定的 *.js 文件(或多个文件),而不仅仅是目录。因此,如果您要使用的库位于名为 test.js 的文件中,并且该文件位于 /src/js 目录中,则您的 libs: 条目将为:“src/js/test.js”。如果您想使用该插件的默认 :libs 目录选项,请参阅 cljs-build 发行说明。
第三,(看起来你已经知道这一点,但这就是让我绊倒的原因)如果你使用浏览器支持的 REPL(cljsbuild 的 repl-listen 选项),你仍然无法加载/引用/使用从该 REPL 中获取您的私有库资源,直到您在已编译的 app.js 的源代码中包含 :require 语句(例如“(ns testing (:require [myprivatelib]))”),然后您必须重新编译 (lein cljsbuild 一次)并重新加载您的浏览器页面,其中包含指向 generated-app.js 的链接。这会引入该代码库。否则,您的浏览器 REPL 将继续坚持认为您的闭包库中提供的命名空间未定义。
我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
1678 次 |
| 最近记录: |