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
> project 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 client
The application uses the sbt-web-scalajs sbt plugin and the scalajs-scripts library.
- Run your application like a regular Play app
compile
triggers the Scala.jsfastOptJS
taskrun
triggers the Scala.jsfastOptJS
task on page refresh~compile
,~run
, continuous compilation is also available
- Compilation errors from the Scala.js projects are also displayed in the browser
- Set
scalaJSStage
toFullOptStage
when packaging your application forfullOptJS
to be executed instead offastOptJS
:sbt 'set scalaJSStage in Global := FullOptStage' dist
- Source maps
- Open your browser dev tool to set breakpoints or to see the guilty line of code when an exception is thrown.
- Source Maps are enabled in both
fastOptJS
andfullOptJS
by default. If you wish to disable Source Maps infullOptJS
, then addscalaJSLinkerConfig in (Compile, fullOptJS) ~= (_.withSourceMap(false))
in the Scala.js projects.
Add the following line to build.sbt
if you wish to load the server project at sbt startup:
onLoad in Global := (onLoad in Global).value.andThen(state => "project server" :: state)
The root project aggregates all the other projects by default. Use this root project to clean all the projects at once.
$ sbt
> clean
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.
- Add
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.4")
toproject/plugins.sbt
- Add the following lines to the
server
's settings inbuild.sbt
:
// Compile the project before generating Eclipse files, so that generated .scala or .class files for Twirl templates are present
EclipseKeys.preTasks := Seq(compile in Compile)