Giter8 template to get started with Play and Scala.js.
This is a Giter8 template showing how you can integrate a Play project with a Scala.js project.
$ sbt new vmunier/play-scalajs.g8
$ cd play-scalajs
$ sbt
sbt:root> project server
[server] run
$ open http://localhost:9000
The application contains three directories:
server
Play application (server side)client
Scala.js application (client side)shared
Scala code that you want to share between the server and the clientThe application uses the sbt-web-scalajs sbt plugin.
compile
triggers the Scala.js fastLinkJS
taskrun
triggers the Scala.js fastLinkJS
task on page refresh~compile
, ~run
, continuous compilation is also availablescalaJSStage
to FullOptStage
when packaging your application for fullLinkJS
to be executed instead of fastLinkJS
:
sbt 'set Global / scalaJSStage := FullOptStage' Universal/packageBin
fastLinkJS
and fullLinkJS
by default. If you wish to disable Source Maps in fullLinkJS
, then add Compile / fullLinkJS / scalaJSLinkerConfig ~= (_.withSourceMap(false))
in the Scala.js projects.The root
project aggregates all the other projects. Use this root project to clean all the projects at once.
$ sbt
sbt:root> clean
Add the following line to build.sbt
if you wish to load the server project at sbt startup:
Global / onLoad := (Global / onLoad).value.andThen(state => "project server" :: state)
clean
will only delete the server's generated files (in the server/target
directory). Call root/clean
to delete the generated files for all the projects.
In IntelliJ, open Project wizard, select Import Project
, choose the root folder and click OK
.
Select Import project from external model
option, choose SBT project
and click Next
. Select additional import options and click Finish
.
Make sure you use the IntelliJ Scala Plugin v2017.2.7 or higher. There are known issues with prior versions of the plugin.
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.4")
to project/plugins.sbt
server
's settings in build.sbt
:// Compile the project before generating Eclipse files, so that generated .scala or .class files for Twirl templates are present
EclipseKeys.preTasks := Seq(Compile / compile)
$ sbt "eclipse with-source=true"
File/Import/General/Existing project...
, choose the root folder. Uncheck the third checkbox to only import client, server and shared/.jvm, click Finish
.