Configuration library written in Scala which is a direct translation of the original widely used Java library.
For motivation and background about this project see the PR to the original project. The TLDR is the library was ported to Scala to support Scala Native so scalafmt which uses HOCON configuration could be compiled into a native application.
Care has been taken to keep the API the same but changes were needed when moving from the Java API. Using Java is also possible as demonstrated by including the working Java examples.
If you are looking for the original Java API, see https://github.com/lightbend/config.
libraryDependencies += "org.ekrich" %% "sconfig" % "x.y.z"
To use in
x.y.z with the version from Maven Central badge above.
For non-JVM projects use
%%% but please refer to the guide below for critical Scala Native and Scala.js usage information. The TLDR is that you must add a
java.time library dependency to your project. Refer to the
sjavatime home page for the current version or alternative
Scala Native and Scala.js - A guide to using Scala Native and Scala.js.
All available versions can be seen at the Maven Repository.
Cross Build Versions
|Scala Version||JVM||Scala.js (1.x)||Native (0.4.x)|
Note: Scala 3 support on Scala Native 0.4.3-RC2 or greater. Scala 2.11 support through version 1.4.9.
Usage and Help
Please refer to the original library documentation here. This is to reduce the maintenance burden of this library.
The intent is to keep the library in sync with the original but each PR needs to be be ported to maintain feature parity. The documentation could contain features that are not yet implemented in this library.
For specific changes, refer to the releases below.
lightbend/config project to sconfigMigrating an existing
This project publishes a scalafix rule to migrate
existing Scala 2 source code that uses
com.typesafe.config.Config to this implementation.
Scalafix rules modify in place existing valid Scala code. Think of it as a fancy find-and-replace
tool that is aware of the Scala type system and can therefore narrowly tailor the changes
being made. (Since scalafix changes the source code on your file system, it's best to commit
any changes prior to running the rule, in case something weird happens.)
The rule will replace
com.typesafe.config package references with
and remove trailing parens on some methods (where the API changed from the Java implementation).
Complete setup documentation and the current
scalafix version can be found in the
scalafix user guide.
At a high level, the process is as follows:
Enable scalafix in the project's build:
Add this to the project's
project/plugins.sbtfile using the version found above:
addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "a.b.c")
Add this to the project's
ThisBuild / semanticdbEnabled := true ThisBuild / semanticdbVersion := scalafixSemanticdb.revision
Add this project to the project's
libraryDependencies, but don't remove the old one yet!
(The old dependency needs to stay on the classpath until after the rule runs, because the code must compile before it will run.)
Run the scalafix sbt task shown below to apply the rule using the version of
sconfigselected. Replace the
x.y.zbelow with the version (must be greater than version
1.4.5when scalafix was added):
Remove the old config dependency from the project's
Commit the changes
Release 1.5.0 - (2022-09-19)
Release 1.4.9 - (2022-01-25)
Release 1.4.8 - (2022-01-12)
Release 1.4.7 - (2022-01-03)
Release 1.4.6 - (2021-12-06)
Release 1.4.5 - (2021-10-08)
Release 1.4.4 - (2021-05-13)
Release 1.4.3 - (2021-05-12)
Release 1.4.2 - (2021-04-01)
Release 1.4.1 - (2021-02-24)
Release 1.4.0 - (2021-01-26)
Release 1.3.6 - (2020-12-21)
Release 1.3.5 - (2020-11-24)
Release 1.3.4 - (2020-11-03)
Release 1.3.3 - (2020-09-14)
Release 1.3.2 - (2020-09-01)
Release 1.3.1 - (2020-07-24)
Release 1.3.0 - (2020-05-01)
Release 1.2.2 - (2020-04-28)
Release 1.2.1 - (2020-02-18)
Release 1.1.3 - (2019-12-27)
Release 1.0.0 - (2019-08-05)
Release 0.9.2 - (2019-06-10)
Release 0.9.1 - (2019-05-22)
Release 0.9.0 - (2019-05-21)
Release 0.8.0 - (2019-04-23)
Release 0.7.6 - (2019-04-10)
Release 0.7.5 - (2019-04-05)
Release 0.7.0 - (2018-12-14)