Mill Plugin for Scalablytyped
The preferred way is to create a separate module for the scalablytyped generated
code, and then add it to your application's moduleDeps
:
// build.mill
package build
import mill._, mill.scalalib._, mill.scalajslib._
import $ivy.`com.github.lolgab::mill-scalablytyped::0.1.15`
import com.github.lolgab.mill.scalablytyped._
trait Base extends ScalaJSModule {
def scalaVersion = "3.3.4"
def scalaJSVersion = "1.17.0"
}
object `scalablytyped-module` extends Base with ScalablyTyped
object app extends Base {
def moduleDeps = Seq(`scalablytyped-module`)
}
After that it will scan the directory for a package.json
file and a node_module
directory.
It will run ScalablyTyped to convert the libraries in package.json
and then add them to ivyDeps
.
If you are using Mill 0.10, make sure to use a Mill version greater than 0.10.1
otherwise the changes
to the build.sc
file will re-trigger the Scalablytyped converter.
Also make sure that import $file.scalablytyped
is one of the first imports in your build.sc
, because
Ammonite recompiles all the next imported classes when a imported file changes. If the scalablytyped file
is imported earlier, there are less chances of doing useless recompilations with ScalablyTyped.
To avoid rerunning the scalablytyped compiler at every build file change,
the preferred way is to create a module in a separate build file.
You need to create a scalablytyped.sc
file like:
import mill._, mill.scalalib._, mill.scalajslib._
import $ivy.`com.github.lolgab::mill-scalablytyped::0.1.12`
import com.github.lolgab.mill.scalablytyped._
object `scalablytyped-module` extends ScalaJSModule with ScalablyTyped {
def scalaVersion = "3.2.2"
def scalaJSVersion = "1.13.0"
}
Then you can import this module in your build.sc
file:
import $file.scalablytyped
import mill._, mill.scalalib._, mill.scalajslib._
object app extends ScalaJSModule {
def scalaVersion = "3.2.2"
def scalaJSVersion = "1.13.0"
def moduleDeps = Seq(scalablytyped.`scalablytyped-module`)
}
The base path where package.json and node_modules are.
Defaults to the project root directory (the directory of build.sc
).
The typescript dependencies to ignore during the conversion
When true (which is the default) uses scala-js-dom types when possible instead of types we translate from typescript in std
The React flavour used by ScalablyTyped
Can be one of Flavour.Normal
, Flavour.Slinky
, Flavour.SlinkyNative
and Flavour.ScalajsReact
If true
generate facades for dev dependencies as well. Default: false
Add support for scalablyTypedIncludeDev
Add support for useScalaJsDomTypes
Update ScalablyTyped to 1.0.0-beta44
Update ScalablyTyped to 1.0.0-beta43
Update Mill 0.11
to 0.11.0
Update Mill 0.11
to 0.11.0-M10
Update Mill 0.11
to 0.11.0-M10
Update Mill 0.11
to 0.11.0-M9
Update Mill 0.11
to 0.11.0-M8
Update Mill 0.11
to 0.11.0-M7
Update Mill 0.11
to 0.11.0-M6
Update ScalablyTyped to 1.0.0-beta41
and Mill 0.11
to 0.11.0-M2
Update Mill 0.11.0-M1
to 0.11.0-M1-29-8f872d
Support Mill 0.11.0-M1
Support Mill 0.11.0-M0
Update ScalablyTyped to 1.0.0-beta40
Update ScalablyTyped to 1.0.0-beta39
Update ScalablyTyped to 1.0.0-beta38
Add support for scalablyTypedFlavour
Bump vulnerable log4j dependency
Improve error messages on failure
Add scalablyTypedBasePath
and scalablyTypedIgnoredLibs
configurations
First release