Project source accessible in github at https://github.com/heralight/lift_basic_runmode
- Lift 2.5-M3
- sbt-runMode (development, production)
- sbt-js
- sbt-less
- modernizr
- jquery 1.8.3
- conditional runMode snippet
- Twitter Bootstrap included to illustrate the use of sbt shell tasks
Goal
Optimize build process in development and production by:
- conditional compilation js and style files depending on mode configuration.
- concat file or not
- compress file or not
- simplify debugging by separating files in development mode.
- test production output easily
- Add custom sbt task like bash script and link to actions
Installation
Uses sbt-plugins plugins.
The current version 0.6-M1 does not work properly with jetty v8. To fix this problem, you can use my fork.
In a temp directory git clone git://github.com/heralight/sbt-plugins.git
cd sbt-plugin
clean-cache publish-local
Structure
css and less in main/css js, coffeescript, template in main/js
These directories will be filtered and copied to resourceManaged and include in webappResources.
main js and css name : « app »
naming convention
if filename contains (rules in build.sbt)
- .p. == production
- .d. == development
- .a. == add to output directory, will be included in webAppRessources path and war package.(a.p.xxx, a.d.xxx, a.xxx)
e.g.:
- app.a.d.css => main css file in development and this file will be included to output directory.
- app.a.p.js => main js file in production and this file will be included to output directory.
- app-part.less => not parsed if not import in any « a » file.
Usages
start in development:
development:start
start in production:
production:start
stop in development:
development:stop
stop in production:
production:stop
dst and pst will do a stop and a start.
compile css manually:
xxmode:less
compile js manually:
xxmode:js
clean output:
xxmode:clean
to clean only css xxmode:less::clean
to clean only js xxmode:js::clean
Alias
already set in .sbtrc
alias dst=;development:stop;development:start
alias pst=;production:stop;production:start
alias dsl= ;development:stop;~development:start
alias psl= ;production:stop;~production:start
alias dstop=development:stop
alias dstart=development:start
alias dc = development:compile
alias pstop=production:stop
alias pstart=production:start
alias pc = production:compile
alias dclean=development:clean
alias pclean=production:clean
alias djclean=development:js::clean
alias dlclean=development:less::clean
Recommendation
make a clean before swapping modes.
For more details on sbt-plugins, refer to sbt-plugins Readme.
To go further, I recommend you mix this project with the lift-mongo.g8 produced by Tim Nelson.