使用scala.js在SBT中仅编译(而不是覆盖运行)
发布时间:2020-12-16 18:02:22 所属栏目:安全 来源:网络整理
导读:我正在尝试使用 scalajs将一些 scala源代码编译为 javascript而不修改有关sbt环境的任何其他内容,我不希望它覆盖“run”sbt命令的默认行为. 目前我有一个build.sbt,看起来像: import ScalaJSKeys._scalaJSSettingsname := "foo"organization := "com.exampl
我正在尝试使用
scalajs将一些
scala源代码编译为
javascript而不修改有关sbt环境的任何其他内容,我不希望它覆盖“run”sbt命令的默认行为.
目前我有一个build.sbt,看起来像: import ScalaJSKeys._ scalaJSSettings name := "foo" organization := "com.example" scalaVersion := "2.11.4" compile <<= (compile in Compile) dependsOn (fastOptJS in Compile) crossTarget in (fastOptJS in Compile) := ((classDirectory in Compile).value / "public" / "js") libraryDependencies ++= { val sprayVersion = "1.3.2" val akkaVersion = "2.3.7" Seq( "io.spray" %% "spray-can" % sprayVersion,"io.spray" %% "spray-routing" % sprayVersion,"io.spray" %% "spray-servlet" % sprayVersion,"io.spray" %% "spray-testkit" % sprayVersion % "test","com.typesafe.akka" %% "akka-actor" % akkaVersion,"com.typesafe.akka" %% "akka-testkit" % akkaVersion % "test","org.specs2" %% "specs2-core" % "2.3.11" % "test","javax.servlet" % "javax.servlet-api" % "3.1.0" % "provided","org.scala-lang.modules.scalajs" %%% "scalajs-jquery" % "0.6" )} 哪个编译javascript和scala就好了,但问题是这实际上打破了现有的“run”命令,我希望使用与默认sbt相同的发现来运行普通的旧scala.我的项目很简单,所以我不想沿着多项目路线走下去(就像play-with-scalajs-example).我想我可能需要删除scalaJSSettings,但后来我不知道如何访问fastOptJS目标,所以我可以将它作为依赖项附加到编译后执行此操作. 解决方法
你不能这样做.只要将scalaJSSettings放在项目中,所有源代码都将使用Scala.js编译器插件进行编译.
这确实会生成.class文件,但是,它们包含基本Scala编译器不会发出的内容,因此可能导致二进制不兼容问题或意外行为(请参阅this post). 相反,使用多项目构建: import ScalaJSKeys._ organization := "com.example" scalaVersion := "2.11.4" val sprayVersion = "1.3.2" val akkaVersion = "2.3.7" lazy val foo = project. settings( name := "foo",compile <<= (compile in Compile) dependsOn (fastOptJS in Compile in bar),crossTarget in (fastOptJS in Compile in bar) := ((classDirectory in Compile).value / "public" / "js"),libraryDependencies ++= Seq( "io.spray" %% "spray-can" % sprayVersion,"javax.servlet" % "javax.servlet-api" % "3.1.0" % "provided" ) ) lazy val bar = project. settings(scalaJSSettings: _*). settings( name := "bar",libraryDependencies += "org.scala-lang.modules.scalajs" %%% "scalajs-jquery" % "0.6",) 这显然也解决了run命令的问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- bash – 为什么`ls |猫`!=`ls`?
- scala – 是否可以在普通sql中使用IN子句Slick for integer
- angularjs – 错误:[$injector:unpr]未知提供者:$stateP
- 单元测试 – Angular 2 TestBed with mocks
- WebService 动态调用帮助类
- twitter-bootstrap-3 – 更改bootstrap-datepicker打开的一
- webservice发布方式
- AngularJS将指令模板中的参数传递给控制器
- 命令在使用emacs shell时清除shell
- bootstrap-table 表头和内容对不齐解决办法