Twirl is automatically available in Play projects and can also be used stand-alone without any dependency on Play.
See the Play documentation for the template engine for more information about the template syntax.
Twirl can also be used outside of Play. An sbt plugin is provided for easy integration with Scala or Java projects.
sbt-twirl requires sbt 1.3.0 or higher.
To add the sbt plugin to your project add the sbt plugin dependency in
// twirl 1.6 and newer: addSbtPlugin("com.typesafe.play" % "sbt-twirl" % "LATEST_VERSION") // twirl 1.5 and before: addSbtPlugin("com.typesafe.sbt" % "sbt-twirl" % "1.5.1")
If you only have a single project and are using a
build.sbt file, create a
root project and enable the twirl plugin like this:
lazy val root = (project in file(".")).enablePlugins(SbtTwirl)
Twirl template files are expected to be placed under
src/test/twirl, similar to
java sources. The source locations for
template files can be configured.
Template files must be named
ext can be
The Twirl template compiler is automatically added as a source generator for
test configurations. When you run
Test/compile the Twirl compiler will generate Scala source files from the
templates and then these Scala sources will be compiled along with the rest of
To add additional imports for the Scala code in template files, use the
templateImports key. For example:
TwirlKeys.templateImports += "org.example._"
To configure the source directories where template files will be found, use the
compileTemplates / sourceDirectories key. For example, to have template
sources alongside Scala or Java source files:
Compile / TwirlKeys.compileTemplates / sourceDirectories := (Compile / unmanagedSourceDirectories).value
The name twirl was thought up by the Spray team and refers to the
@ character in the template language, which is sometimes called "twirl".
The first stand-alone version of Twirl was created by the Spray team.
An optimized version of the Twirl parser was contributed by the Scala IDE team.