You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
4.0 KiB

import xerial.sbt.Sonatype._
cancelable in Global := true
val compilerPlugins = Seq(
addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.10.2"),
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.1" cross CrossVersion.full)
)
val versions = new {
val scalatest = "3.1.0-SNAP11"
val outwatch = "676f94a"
}
val commonSettings = Seq(
organization := "com.clovellytech",
version := Version.version,
scalaVersion := Version.scalaVersion,
scalacOptions ++= options.scalac,
scalacOptions in (Compile, console) := options.scalacConsole,
updateOptions := updateOptions.value.withLatestSnapshots(false)
) ++ compilerPlugins
lazy val publishSettings = Seq(
useGpg := true,
publishMavenStyle := true,
publishTo := sonatypePublishTo.value,
publishArtifact in Test := false,
homepage := Some(url("https://github.com/clovellytech/outwatch-router")),
pomIncludeRepository := Function.const(false),
sonatypeProfileName := "com.clovellytech",
// License of your choice
licenses := Seq("MIT" -> url("http://opensource.org/licenses/MIT")),
// Where is the source code hosted
sonatypeProjectHosting := Some(GitHubHosting("clovellytech", "outwatch-router", "pattersonzak@gmail.com"))
)
lazy val docs = project
.in(file("./router-docs"))
.settings(commonSettings)
.enablePlugins(MdocPlugin)
.enablePlugins(MicrositesPlugin)
.settings(
name := "outwatch-router-docs",
description := "A router for outwatch",
organizationName := "com.clovellytech",
organizationHomepage := Some(url("https://github.com/clovellytech")),
homepage := Some(url("https://clovellytech.github.io/outwatch-router")),
micrositeUrl := "https://clovellytech.github.io/outwatch-router",
micrositeBaseUrl := "/outwatch-router",
micrositeName := "Outwatch Router",
micrositeCompilingDocsTool := WithMdoc,
micrositeGithubOwner := "clovellytech",
micrositeGithubRepo := "outwatch-router",
scalacOptions := options.scalacConsole
)
.settings(
mdocVariables := Map(
"VERSION" -> version.value
)
)
.dependsOn(router)
lazy val copyFastOptJS = TaskKey[Unit]("copyFastOptJS", "Copy javascript files to target directory")
lazy val router = project
.in(file("./outwatch-router"))
.settings(name := "outwatch-router")
.enablePlugins(ScalaJSPlugin)
.enablePlugins(ScalaJSBundlerPlugin)
.settings(commonSettings)
.settings(
useYarn := true, // makes scalajs-bundler use yarn instead of npm
requireJsDomEnv in Test := true,
version in webpack := "4.16.1",
version in startWebpackDevServer := "3.1.4",
webpackDevServerExtraArgs := Seq("--progress", "--color"),
webpackConfigFile in fastOptJS := Some(baseDirectory.value / "webpack.config.dev.js"),
// https://scalacenter.github.io/scalajs-bundler/cookbook.html#performance
webpackBundlingMode in fastOptJS := BundlingMode.LibraryOnly(),
resolvers += "jitpack" at "https://jitpack.io",
libraryDependencies ++= Seq(
"io.github.outwatch" % "outwatch" % versions.outwatch,
"org.scalatest" %%% "scalatest" % versions.scalatest % Test,
),
copyFastOptJS := {
val inDir = (crossTarget in (Compile, fastOptJS)).value
val outDir = (crossTarget in (Compile, fastOptJS)).value / "dev"
val files = Seq("outwatch-router-fastopt-loader.js", "outwatch-router-frontend-fastopt.js", "outwatch-router-frontend-fastopt.js.map") map { p => (inDir / p, outDir / p) }
IO.copy(files, overwrite = true, preserveLastModified = true, preserveExecutable = true)
},
// hot reloading configuration:
// https://github.com/scalacenter/scalajs-bundler/issues/180
addCommandAlias("dev", "; compile; fastOptJS::startWebpackDevServer; devwatch; fastOptJS::stopWebpackDevServer"),
addCommandAlias("devwatch", "~; fastOptJS; copyFastOptJS")
)
.settings(publishSettings)
lazy val root = project
.in(file("."))
.settings(name := "outwatch-router-root")
.settings(commonSettings)
.settings(
skip in publish := true,
)
.dependsOn(router)
.aggregate(router)