vmunier / Play Scalajs.g8
Labels
Projects that are alternatives of or similar to Play Scalajs.g8
Play Framework with Scala.js
This is a Giter8 template showing how you can integrate a Play project with a Scala.js project.
Run the application
$ 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
Features
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
task -
run
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.
Load the server project at sbt startup
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)
Cleaning
The root project aggregates all the other projects by default. Use this root project to clean all the projects at once.
$ sbt
> clean
IDE integration
IntelliJ
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.
Eclipse
- 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)