我是否可以将目录设置为“非”目录;js";及;jvm“;使用Scalajs sbt插件';什么是交叉项目?

我是否可以将目录设置为“非”目录;js";及;jvm“;使用Scalajs sbt插件';什么是交叉项目?,sbt,scala.js,Sbt,Scala.js,似乎Scala.js的sbt插件在跨项目子目录中有硬编码路径“jvm”和“js”,这些子目录分别包含针对服务器和客户端的代码 我错过什么了吗?可以在my Build.scala/Build.sbt中设置这些名称吗 这似乎不容易,因为CrossType抽象类声明jvmDir和jsDir函数为最终函数?您可以定义自己的交叉类型,并重写projectDir方法: class MyCrossType extends CrossType { def projectDir(crossBase: File

似乎Scala.js的sbt插件在跨项目子目录中有硬编码路径“jvm”和“js”,这些子目录分别包含针对服务器和客户端的代码

我错过什么了吗?可以在my Build.scala/Build.sbt中设置这些名称吗


这似乎不容易,因为CrossType抽象类声明jvmDir和jsDir函数为最终函数?

您可以定义自己的
交叉类型
,并重写
projectDir
方法:

class MyCrossType extends CrossType {
  def projectDir(crossBase: File, projectType: String): File = ???
    // your directory structure. pattern match on projectType,
    // if you want other names than js and jvm

  def sharedSrcDir(projectBase: File, conf: String): Option[File] = ???
    // Location of shared source directories (if you want one).
}

jvmDir
jsDir
函数在内部使用
projectDir
函数。因此,您可以在一些默认的
CrossType
中使用
MyCrossType
,这样您就可以开始了。

对于有经验的sbt用户来说,这一点很明显,但我不确定:我应该在哪里定义MyCrossType?在build.sbt中?怎么用?当我天真地尝试时,解析表达式时会出现sbt错误。您必须在项目目录中的scala文件中执行此操作。例如,
project/MyCrossType.scala
。我找到了一种使用匿名类扩展CrossType的方法。您介意我将答案编辑为包含build.sbt示例吗?