ScalaJS只需将输出重定向到指定目录
通过Scala.js的sbtScalaJS只需将输出重定向到指定目录,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
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