首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ClojureScript中使用Cljsbuild编译外部JS文件

在ClojureScript中使用Cljsbuild编译外部JS文件
EN

Stack Overflow用户
提问于 2013-03-13 21:51:56
回答 1查看 1.8K关注 0票数 5

我正在尝试使用lein-cljsbuild编译一些JS库,以便将它们集成到我们的ClojureScript代码库中。首先,我在每个文件的顶部添加了一些goog.provide,这些文件根据它们的名称空间在目录树中进行分层组织(就像在Java中一样)。也就是说,名称空间a.b.c位于src-js/libs/a/b/c.js中

我已经将JS文件放在项目的根目录src-js/libs中,并且我有以下内容:lein-cljsbuild的编译器选项:

代码语言:javascript
复制
{:id "prod",
 :source-paths ["src-cljs" "src-js"]
 :compiler
 {:pretty-print false,
  :libs ["libs/"]
  :output-to "resources/public/js/compiled-app.js",
  :optimizations :simple}}

所有JS文件都不会编译到已编译的应用程序文件中。怎么了?

我还尝试将它们放在resources/closure js/libs中,但没有成功。

我使用lein-cljsbuild 0.3.0。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-26 02:47:27

首先,与某些文本中的建议不同,您不需要在project.clj的任何类路径配置语句中包含您的私有闭包库位置。因此,除非“source-path:”语句中包含的"src/js“目录有其他用途,否则可以将其删除。

其次,为了引入私有闭包代码,唯一要添加到project.clj中的是您所做的"libs:“引用;但与您输入的引用不同,该引用必须是对特定*.js文件(或多个文件)的引用,而不仅仅是目录。因此,如果您想要使用的库在一个名为test.js的文件中,并且该文件位于/src/js目录中,那么libs: entry应该是:"src/js/test.js“。如果您想使用该插件的默认选项:libs directory,请参阅cljs-build发行说明。

第三,(看起来你已经知道了这一点,但这就是让我绊倒的原因)如果你正在使用浏览器支持的REPL ( cljsbuild的REPL -listen选项),你仍然不能从那个REPL加载/引用/使用你的私有库资产,除非你在你的编译-app.js的源代码中包含一个:require语句(例如"(ns must (:require myprivatelib))“),那么你必须重新编译(lein cljsbuild一次)并重新加载你的浏览器页面,并使用一个到编译-app.js的链接。这就引入了代码库。否则,您的浏览器REPL将继续坚持闭包库中提供的名称空间未定义。

我希望这能帮到你。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15387269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档