2016-05-10 10 views
2

Scala.jsのsbt fastOptJSによって、myproject/target/scala-2.11/web-fastopt.jsmyproject/jsにリダイレクトしたいのですか? web-jsdeps.jsため複雑な出力を指定されたディレクトリにリダイレクトするためのScalaJS

同じ - /myproject/libs

にリダイレクトするために、私は複雑すぎると思われるこの Scala.js compilation destination

を読みました。私は1つだけのプロジェクトを持っていますが、2つか3つではありません。プレイフレームワークはありません。単純なファイルツーフォルダーコピーです。

UPDATE: 私の設定は、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 

) 

マイファイル構造は次のとおりです。私はそれが* -site-jsdepsに作成されます言ったように私はfastOpt.js

をコピーしたい <root>/plugin/src/content .js in /target/scala-2.11/

答えて

1

このsbt設定の場合:

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

私は今、私はそれを.settings(..)またはプロジェクトの外に置こうとしました。私もこれで試した:http://stackoverflow.com/questions/27505957/using-scala-js-to-compile-only-and-not-override-run-in-sbt eventhoughそこに2つのプロジェクト。 – ses

+0

'crossTarget in(Compile、fastOptJS)'? – sjrd

+0

nope。私の質問が更新されました。 – ses

3

はい、あなたはこのようにそれを行うことができます。多くのための

artifactPath in(Compile, packageScalaJSLauncher) := baseDirectory.value/".."/"jvm"/"webapp"/"js"/"launcher.js", 
 
artifactPath in(Compile, fastOptJS) := baseDirectory.value/".."/"jvm"/"webapp"/"js"/"fastOpt.js", 
 
artifactPath in(Compile, fullOptJS) := baseDirectory.value/".."/"jvm"/"webapp"/"js"/"fullOpt.js", 
 
artifactPath in(Compile, packageJSDependencies) := baseDirectory.value/".."/"jvm"/"webapp"/"js"/"dependency.js"

、あなたはこれを追加するにはBuildProject.scalaobject BuildProject extends Build {)またはbuild.sbthttps://github.com/yuanqingfei/gdbscan-akka-d3js/blob/master/build.sbt

+0

私は 'crossProject'を使うとうまくいくと思っています。私の場合は、' lazy val myChromePluginProject = Project(id = "my-project"、base = file( "。"))というプロジェクトを1つだけ使用します。 enablePlugins(ScalaJSPlugin)。 設定(ArtifactPath(compile、fastOptJS):= baseDirectory.value/"plugin"/"src"/"fastOpt.js"、...)コピーしません。 私の質問が更新されました。 – ses

0

を参照することができます行:

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バッチも同様です。

関連する問題