因此,我将我的大型Clojure项目一分为二。
我编译了核心部分并制作了一个Uberjar。
然后键入:
lein deploy clojars将该jar公开,然后将其作为依赖项添加到我的应用程序的project.clj文件中。
这段代码是用cljx编写的,所以它可以编译成javascript。
在不让整个ClojureScript虚拟机重复两次的情况下,将两个cljx代码库合并到两个单独的javascript库中需要哪些等效步骤?
更新:只是为了澄清几件事。
1)我知道我可以转到.cljc而不是.cljx。我唯一担心的是,这看起来很新,我不知道我的代码的现有用户是否可能拥有它。但我可能很快就会采取这一行动。关于cljc的答案也是受欢迎的。
2)我已经成功地将我的代码编译成一个单一的main.js文件。我正在寻找的是如何编译单独的cljs库,这些库可以包含在其他cljs项目中。因为每次我在cljs中编译一些东西时,我都会得到一个包含整个clojurescript VM的main.js文件。
3)我回到这个问题的动机之一是我想要开始使用Figwheel。因此,我希望能够在clojurescript中创建库,并将其放入我正在通过Figwheel开发的新clojurescript项目中。因此,我想我会在这个新项目的project.clj文件中引用它们,并将它们作为已编译的.js文件包含在网页中。这一点我说错了吗?
发布于 2014-12-09 00:30:31
你有没有试过Leiningen的签出依赖特性?
https://github.com/technomancy/leiningen/blob/stable/doc/TUTORIAL.md#checkout-dependencies
发布于 2015-08-09 00:09:54
如果没有关于project.clj的更多详细信息,就很难说出配置中的错误或遗漏之处,但我将尝试介绍您应该查看的最重要部分。
不要使用cljx。使用阅读器条件!
现在, 支持读者条件(cljc)。如果您有机会升级到clojure 1.7.0,那么我的建议是这样做,并将cljx留在后面:您将避免来自cljx的许多问题,因为cljc是clojure编译器所知道的东西,而不是使用构建工具(需要与构建管道的其余部分同步)。
如果您仍要使用cljx...
我不会重复优秀的README from cljx中涵盖的所有内容,但只需要指出一些相关的部分:
javac、compile、uberjar甚至test或cljsbuild test)之前调用cljx once。因此,您可能希望在project.clj中创建aliases或修改默认:prep-tasks。更多信息:参见the Installation section:output-path应该添加到你的cljsbuild :source-paths中。请参阅the Usage section最后但并非最不重要的是:
:classifier "aot"。只有在你知道自己在做什么的情况下才能使用它。如果您有依赖问题,请在开发过程中将其删除。无论你使用的是cljx,cljc还是普通的cljs,这一点都适用。https://stackoverflow.com/questions/27273731
复制相似问题