This repository is a template of the basic structure for a Scala.js web project, contains all the best technologies in Scala.js community until 2023:
Note that the default branch of this repository is written in Scala 3. Check out the scala-2.13 branch for a project template in Scala 2.13.
Other libraries and tools can be found in sbt settings.
This template contains settings for a static web project, and you can additionally configure Play or Akka HTTP dependencies in web/build.sbt
to turn it into a dynamic web project.
web/
The sbt-web project for web assets
build.sbt
Sbt settings for the sbt-web project, which contains WebJars dependency configurations, including SASS / SCSS dependencies and static resources from external libraries.
src/main/assets/
The root directory of static assets sources.
index.html
The main page in release mode, which references uglified CSS and JS resources.
devMod.html
The main page in development mode, which references indented CSS and JS resources.
style.scss
The style sheet used by main page in SCSS syntax, which will be compiled to style.css
by a sbt-web pipeline.
target/web/public/main/
The root directory of static assets output.
lib/
The output directory for Webjars dependencies.
js/
The Scala.js project to create JS output used in the sbt-web project.
build.sbt
Sbt settings for the Scala.js project, which contains Scala.js settings, NPM dependencies and type definitions.
src/main/scala/
The directory contains Scala.js source files.
project/
plugins.sbt
Sbt plugins dependencies.
Just clone this repository, and the following sbt tasks are available.
Run the following command:
sbt assets
Then visit web/target/web/public/main/devMod.html
to browse the main page.
By default, the assets
command builds Scala.js in development mode. To build this project in release mode
sbt "set scalaJSStage := FullOptStage" assets
Then visit web/target/web/public/main/index.html
to browse the main page in release mode.
Run the following command:
sbt test
Then the examples in Scaladoc comments will be ran by ScalaTest.