1

我正在研究我的第一个“真正的”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 6b80c77my-screeps commit 636ab847 来了解它的外观。基本上我将资源目录和 src/deps.cljs 移到了我的屏幕上。

我认为这是一种解决方法,而不是实际答案。

4

0 回答 0