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:
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
InputTasks. Note that you must first install any apps you want to use with
npm install or
|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
InputTasks 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
InputTasks, use the following:
val myTask = taskKey[Unit]("My task") myTask := gulp.toTask(" build").value
This is equivalent to
|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.|
FrontendKeys are also available:
|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