Giter8 Scala Templates :: Dec 2, 2016

Defending the configuration of my Scala templates.

Contents:

  1. General Configuration
  2. Scala Minimal
  3. Scala Maven
  4. ScalaJS Minimal
  5. ScalaJS Modular
  6. Play

General Configuration

In every scala template, the below scalac options are included, and are detailed at Recommended scalac options

    scalacOptions ++= Seq(
      "-deprecation",
      "-unchecked",
      "-target:jvm-1.8",
      "-encoding", "UTF-8",
      "-Xfuture",
      "-Yno-adapted-args",
      "-Ywarn-dead-code",
      "-Ywarn-numeric-widen",
      "-Ywarn-value-discard",
      "-Ywarn-unused",
      "-feature",
      "-Xlint"
    )

ScalaCheck, an automated property-based testing framework, is often more robust than traditional unit tests, and can integrate with ScalaTest, uTest, and spec2

Sbt’s cached dependency resolution is an experiemental feature, but often improves compile time for projects.

    updateOptions := updateOptions.value.withCachedResolution(true)

Each template is licenced under Creative Commons Zero v1.0.

Scala Minimal

A no frills Scala template. Initialized with sbt new augustnagro/s.g8. and includes the general configuration above.

Source at https://github.com/augustnagro/s.g8

Scala Maven

Template for projects being published to Sonatype / Maven Central.

sbt new augustnagro/smaven.g8

Relevant SBT Docs:

Source at https://github.com/augustnagro/sMaven.g8

ScalaJS Minimal

A non-modular Scala.js template.

sbt new augustnagro/sjs.g8

Source at http://github.com/augustnagro/sjs.g8

ScalaJS Modular

Modular Scala.js template. This is the best solution for managing lots of npm dependencies, but causes a big increase in build time.

sbt new augustnagro/sjsmod.g8

Source at http://github.com/augustnagro/sjsMod.g8

Play

Multi-project build with Scala.js

sbt new augustnagro/play.g8

Source at http://github.com/augustnagro/play.g8