Scala.js - 从SBT运行传递命令行参数

时间:2017-03-24 11:49:42

标签: node.js scala command-line sbt scala.js

在开发普通JVM应用程序时使用sbt run运行应用程序时,我可以使用run <args>传递命令行参数。当我尝试使用Scala.js时,我得到一个错误&#34;没有有效的解析器&#34;。在尝试像runMain这样的runMain Main.main arg变体时,错误是&#34;预期的非空白字符&#34;,箭头指向Main.main后面。

在从SBT运行Scala.js / Node.js应用程序时,是否有某种方法可以将参数传递给它?

(我使用的是Scala.js 0.6.15)。

2 个答案:

答案 0 :(得分:2)

不,没有,因为JavaScript没有命令行参数的概念。 Node.js可以,但只有从命令行启动,并且sbt插件不支持该用例,我担心。

随意提交功能请求。我不确定它是否可以适应,但我们最终可以调查它。

答案 1 :(得分:0)

可以定义一个调用node.js的自定义任务,并使用SBT解析器解析参数。将其添加到build.sbt:

import complete.DefaultParsers._

lazy val runa = inputKey[Unit]("Run app with arguments")

runa := {
  (fastOptJS in Compile).value // build it first
  val args: Seq[String] = spaceDelimited("<arg>").parsed
  val npmRun = "node index.js" + args.map("\"" + _ + "\"").mkString(" "," ","")
  npmRun.!
}

您还需要在项目根目录中创建一个文件index.js,其中包含以下内容:

require("./target/scala-2.12/xxxx-jsdeps.js");

require("./target/scala-2.12/xxxx-fastopt.js");