我正在研究我的第一个“真正的”clojurescript项目,并遇到了一个问题。
目标是将生成的javascript上传到https://screeps.com,以便玩该游戏。
我正在screeps-beans commit 5930152使用某人的外部/一般图书馆的分支。这个fork的脚本/手表可以很好地构建它,并且据我所知可以生成适当的javascript。
我创建了my-screeps commit 181a9da5,它使用lein checkout来吸引screeps-beans。它目前只是尝试打印到控制台(计划将最终包含我的游戏AI的所有逻辑,这些逻辑不够通用于进入screeps-beans)。
我使用https://github.com/swannodette/mies生成脚本/我遇到了重复的extern输入问题。
如果我使用脚本/构建它似乎工作正常,但据我所知,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移动到my-screeps。
我认为这是一种解决方法而非实际答案。