summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-02-03 21:34:10 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-02-03 21:34:10 -0800
commit91345fce118b67d9ca334a5f3cc973b458e01fc2 (patch)
tree469ac066c40e98d8f42bfc5198cacf71ddc84313
parentec39948ed1333699daf246e2ba37ccec67db5bd2 (diff)
downloadmill-unstable.tar.gz
mill-unstable.tar.bz2
mill-unstable.zip
flesh out some docsunstable
-rw-r--r--docs/intro.md100
1 files changed, 100 insertions, 0 deletions
diff --git a/docs/intro.md b/docs/intro.md
index bdd49bc4..58b9b1bd 100644
--- a/docs/intro.md
+++ b/docs/intro.md
@@ -521,16 +521,116 @@ Scala build:
### Cross Scala-Version Modules
+```scala
+import mill._
+import mill.scalalib._
+object foo extends Cross[FooModule]("2.10.6", "2.11.11", "2.12.4")
+class FooModule(val crossScalaVersion: String) extends CrossScalaModule{
+ ...
+}
+```
+
+Mill provides a `CrossScalaModule` template, which can be used with `Cross` to
+cross-build Scala modules across different versions of Scala. The default
+configuration for `CrossScalaModule` expects a filesystem layout as follows:
+
+```text
+build.sc
+foo/
+ src/
+ src-2.10/
+ src-2.11/
+ src-2.12/
+ test/
+ src/
+ src-2.10/
+ src-2.11/
+ src-2.12/
+```
+
+Code common to all Scala versions lives in `src`, while code specific to one
+version lives in `src-x.y`.
+
### Scala.js Modules
+```scala
+import mill._
+import mill.scalajslib._
+
+object foo extends ScalaJSModule {
+ def scalaVersion = "2.12.4"
+ def scalaJSVersion = "0.6.22"
+}
+```
+
+`ScalaJSModule` is a variant of `ScalaModule` that builds your code using
+Scala.js. In addition to the standard `foo.compile` and `foo.run` commands (the
+latter of which runs your code on Node.js, which must be pre-installed)
+`ScalaJSModule` also exposes the `foo.fastOpt` and `foo.fullOpt` tasks for
+generating the optimized Javascript file.
+
### Cross Scala-JVM/Scala.js Modules
### Cross Scala-Version Scala-JVM/JS Modules
### SBT-Compatible Modules
+```scala
+import mill._
+import mill.scalalib._
+
+object foo extends SbtModule {
+ def scalaVersion = "2.12.4"
+}
+```
+
+These are basically the same as normal `ScalaModule`s, but configured to follow
+the SBT project layout:
+
+```text
+build.sc
+foo/
+ src/
+ main/
+ scala/
+ test/
+ scala/
+```
+
+Useful if you want to migrate an existing project built with SBT without having
+to re-organize all your files
+
+
### SBT-Compatible Cross Scala-Version Modules
+```scala
+import mill._
+import mill.scalalib._
+object foo extends Cross[FooModule]("2.10.6", "2.11.11", "2.12.4")
+class FooModule(val crossScalaVersion: String) extends CrossSbtModule{
+ ...
+}
+```
+
+A `CrossSbtModule` is a version of `CrossScalaModule` configured with the SBT
+project layout:
+
+```text
+build.sc
+foo/
+ src/
+ main/
+ scala/
+ scala-2.10/
+ scala-2.11/
+ scala-2.12/
+ test/
+ scala/
+ scala-2.10/
+ scala-2.11/
+ scala-2.12/
+```
+
### SBT-Compatible Cross Scala-Version Scala-JVM/JS Modules