ScalaJS只需将输出重定向到指定目录

ScalaJS只需将输出重定向到指定目录,scala,sbt,scala.js,Scala,Sbt,Scala.js,通过Scala.js的sbtfastOptJS,我只想将myproject/target/Scala-2.11/web fastopt.js重定向到myproject/js,这可能吗 同样适用于webjsdeps.js-将其重定向到/myproject/libs 我读过这个 这似乎太复杂了。我只有一个项目,不是两个或三个,没有播放框架,只是简单的文件到文件夹的副本 更新: 我的设置,project/BuildProject.scala: lazy val chromePluginProjec

通过Scala.js的sbt
fastOptJS
,我只想将
myproject/target/Scala-2.11/web fastopt.js
重定向到
myproject/js
,这可能吗

同样适用于
webjsdeps.js
-将其重定向到
/myproject/libs

我读过这个

这似乎太复杂了。我只有一个项目,不是两个或三个,没有播放框架,只是简单的文件到文件夹的副本

更新: 我的设置,
project/BuildProject.scala

 lazy val chromePluginProject = Project(id = "chromePlugin", base = file(".")).enablePlugins(ScalaJSPlugin).

settings(

 version      := "0.1",
 scalaVersion := Versions.scala,

 artifactPath in(Compile, fastOptJS) := baseDirectory.value / "plugin" / "src" / "content" / "fastOpt.js",


  ivyScala := ivyScala.value map { _.copy(overrideScalaVersion = true) }, // TODO:

 //mainClass := Some("branch.ScalaJsSample"),

 libraryDependencies ++= scalaJsDependencies,

 libraryDependencies += "be.doeraene" %%% "scalajs-jquery" % "0.9.0",
 libraryDependencies += "com.lihaoyi" %%% "upickle" % Versions.upickle,

 libraryDependencies += "com.lihaoyi" %%% "scalatags" % Versions.scalaTags,

 // we will not use use DOM directly so commenting it
 libraryDependencies += "org.scala-js" %%% "scalajs-dom" % Versions.dom,


 jsDependencies += "org.webjars" % "jquery" % Versions.jquery / "jquery.js",
 jsDependencies += "org.webjars.bower" % "webcomponents.js" % Versions.webcomponents / "webcomponents-lite.js",

  // After reloading and rerunning fastOptJS,
  // this will create scala-js-jsdeps.js
 skip in packageJSDependencies := false,

 // allows DOM be available from from console' run (so no "ReferenceError:  "window" is not defined." error would appear)
 jsDependencies += RuntimeDOM, // it will use PhantomJS, basically

 scalaJSUseRhino in Global := false //will use node.js to run the thing

)
我的文件结构是:
/plugin/src/content
我想复制
fastOpt.js


正如我所说,它在/target/scala-2.11/

中创建*-site-jsdeps.js,只需使用此sbt设置即可:

crossTarget in fastOptJS := baseDirectory.value / "js"

是的,您可以这样做:

artifactPath(Compile,packageScalaJSLauncher):=baseDirectory.value/.“/”jvm“/”webapp“/”js“/”launcher.js”,
artifactPath in(Compile,fastOptJS):=baseDirectory.value/.“/”jvm“/”webapp“/”js“/”fastOptJS“,
artifactPath in(Compile,fullOptJS):=baseDirectory.value/.“/”jvm“/”webapp“/”js“/”fullOpt.js”,

(Compile,packageJSDependencies)中的artifactPath:=baseDirectory.value/.“/”jvm“/”webapp“/”js“/”dependency.js”
BuildProject.scala
objectbuildproject extensed Build{
)或
Build.sbt
添加此行:

lazy val copyJsTask = TaskKey[Unit]("copyJsTask", "Copy javascript files to target directory")

  lazy val myPluginProject = Project(id = "my-plugin", base = file(".")).

    settings(

     copyJsTask := {
        val outDir = baseDirectory.value / "plugin/src/content"
        val inDir = baseDirectory.value / "target/scala-2.11"
        val files = Seq("my-plugin-fastopt.js", "my-plugin-fastopt.js.map") map { p =>   (inDir / p, outDir / p) }
        IO.copy(files, overwrite = true)
     }, ..
在项目的根目录中添加新文件 .sbtrc

内容如下:

alias jsCompile=;fastOptJS;copyJsTask
--


npm/grunt/linux批处理的“复杂性”让我很满意。

现在似乎对我有效,我尝试将它放在.settings(..)或项目之外。我也尝试过这样做:尽管又有两个项目。
crossTarget in(Compile,fastOptJS)
然后呢?我想如果我使用
交叉项目
,那么所有这些都会起作用,在我的例子中,我只使用一个项目,jsone:
lazy val myChromePluginProject=project(id=“my project”,base=file(“.”)。enablePlugins(scalajslugin)。settings(artifactPath in)(Compile,fastOptJS):=baseDirectory.value/“plugin”/“src”/“content”/“fastOpt.js”,
…它不会复制更新后的问题。这在Scala.js 1.3(无交叉项目)中似乎不起作用,至少在
fastLinkJS