NOTE: Logging does not work in the current released version, Everyting works but the logs are not displayed. This is due to sbt-slf4j not working properly. In order to make working on it easier, I've copied the files from sbt-slf4j directly into this project on branch tcn_sbt1. However, I have still not gotten it to work, so I've pretty much abandoned it. Please feel free to send a PR if you get it working.
SBT plugin for managing frontend code (node and npm, grunt, gulp, bower, etc.)
SBT version of frontend-maven-plugin.
From the readme:
This plugin downloads/installs Node and NPM locally for your project, runs NPM install, and then any combination of Bower, Grunt, Gulp, Jspm, Karma, or Webpack. It's supposed to work on Windows, OS X and Linux.
Add the following to your project/plugins.sbt file:
resolvers += Resolver.jcenterRepo
addSbtPlugin("com.eltimn" % "sbt-frontend" % "1.1.0")
Note: if you're using an SBT version < 1.0.0, use v0.3.0 of this library.
Enable the plugin in your build.sbt file with:
enablePlugins(FrontendPlugin)
Upon loading SBT, Node and npm/yarn with be automatically installed locally. Also, if package.json
was modified since the last time SBT was loaded, npm install
or yarn install
will be called. The same goes for bower.json
, if it exists.
If you want to use Yarn instead of NPM, set the nodePackageManager
setting in your build.sbt file:
nodePackageManager := sbtfrontend.NodePackageManager.Yarn
The plugin makes available the following InputTask
s. Note that you must first install any apps you want to use with npm install
or yarn add
.
Input Task | Description |
---|---|
npm | Runs npm commands |
yarn | Runs yarn commands |
bower | Runs bower commands |
grunt | Runs grunt commands |
gulp | Runs gulp commands |
jspm | Runs jspm commands |
karma | Runs karma commands |
webpack | Runs webpack commands |
ember | Runs ember commands |
webjars | Extracts webjar assets from classpath jars |
Since these are InputTask
s you can call them with command line arguments. E.g.:
sbt> npm install gulp --save-dev
sbt> bower install
sbt> gulp build
To create a standard Task
using one of the InputTask
s, use the following:
val myTask = taskKey[Unit]("My task")
myTask := gulp.toTask(" build").value
This is equivalent to gulp build
.
Task | Description |
---|---|
nodeInstall | Installs Node and npm. Runs automatically at startup. |
frontendCleanDeps | Remove frontend dependencies (node_modules and bower_components). Must reload project afterwards. |
frontendCleanAll | Remove Node, NPM, and dependencies. Must reload project afterwards. |
The following FrontendKeys
are also available:
Setting | Description |
---|---|
frontendFactory | The FrontendFactory instance |
nodeVersion | The version of Node.js to install |
npmVersion | The version of NPM to install |
yarnVersion | The version of Yarn to install |
nodeInstallDirectory | The base directory for installing node and npm |
nodeWorkingDirectory | The base directory for running node and npm |
nodeDownloadRoot | Where to download Node.js binary from |
npmDownloadRoot | Where to download NPM binary from |
yarnDownloadRoot | Where to download Yarn binary from |
nodeProxies | Seq of proxies for downloader |
nodePackageManagerInstallCmd | Node Package manager project installation command |
See the lift-extras-example project for an example project that uses sbt-frontend.
Most of the heavy lifting is done by frontend-maven-plugin.
This project was also inspired by:
Published under Apache 2.0