我正在研究我的第一个“真正的”clojurescript 项目,但遇到了问题。
目标是将生成的 javascript 上传到https://screeps.com以玩该游戏。
我正在使用在screeps-beans commit 5930152找到的某人的外部/通用库的一个分支。这个 fork 的脚本/手表可以很好地构建它,并且据我所知似乎生成了适当的 javascript。
我创建了my-screeps commit 181a9da5,它使用 lein checkouts 来拉入 screeps-beans。它目前只是尝试将 println 打印到控制台(计划是让它最终包含我的游戏 AI 的所有逻辑,这些逻辑不足以进入 screeps-beans)。
我使用https://github.com/swannodette/mies生成脚本/并且遇到了重复的外部输入问题。
如果我使用脚本/构建,它似乎可以正常工作,但据我所知,对于https://screeps.com来说效果不佳。
如果我使用脚本/发布,我会得到:
➜ my-screeps git:(clojurescript) ✗ scripts/release
Building ...
Analyzing jar:file:/home/myusername/.m2/repository/org/clojure/clojurescript/1.9.229/clojurescript-1.9.229.jar!/cljs/core.cljs
Analyzing src/my_screeps/core.cljs
Applying optimizations :advanced to 14 sources
Sep 08, 2016 1:08:18 PM com.google.javascript.jscomp.LoggerErrorManager println
SEVERE: ERROR - Duplicate extern input: /home/myusername/git_repos/screeps-beans/resources/screeps/externs/screeps.ext.js
Sep 08, 2016 1:08:18 PM com.google.javascript.jscomp.LoggerErrorManager printSummary
WARNING: 1 error(s), 0 warning(s)
ERROR: JSC_DUPLICATE_EXTERN_INPUT. Duplicate extern input: /home/myusername/git_repos/screeps-beans/resources/screeps/externs/screeps.ext.js at (unknown source) line (unknown line) : (unknown column)
... done. Elapsed 3.692992138 seconds
发布脚本调用 clojurescript 编译器使用
(require '[cljs.build.api :as b])
(println "Building ...")
(let [start (System/nanoTime)]
(b/build "src"
{:output-to "release/main.js"
:output-dir "release"
:optimizations :advanced
:verbose true})
(println "... done. Elapsed" (/ (- (System/nanoTime) start) 1e9) "seconds"))
我想我在 screeps-beans 或 my-screeps 的某个地方有错字或其他类似的误解,但我不知所措。
编辑:
我发现我可以通过将 extern 放入 my-screeps 而不是 screeps-beans 来完成这项工作。您可以通过查看screeps-beans commit 6b80c77和my-screeps commit 636ab847 来了解它的外观。基本上我将资源目录和 src/deps.cljs 移到了我的屏幕上。
我认为这是一种解决方法,而不是实际答案。