Awesome
GENERATOR-CLOSURE-STACK
Client-heavy stack for node development.
The stack:
- Node: Server side JavaScript
- Grunt: Task automation
- Bower: Third-pary client libraries
- Express: Web server for node
- LESS CSS: Programmatic CSS
- Closure Compiler: Type safe and minified JavaScript
- Closure Templates: Generate JavaScript for creating html
Quick install
Download + run bootstrap.sh (this will install a local version of node, grunt and yeoman).
Alternative install
- Install node + npm
npm install -g grunt yo generator-closure-stack
yo closure-stack
grunt setup
To run
grunt run:dev
Limitations / todos
- does not make use of closure builder to assemble client JS
- closure library is only used for namespacing
Folder structure
src
code for your application
src/client
code run in the browser
src/client/js
javascript (and externs) run in the browser
src/client/js/externs
extern files for the closure compiler
src/client/js/third_party
third party code that is included directly on the page, bypassing closure compiler (except for
an extern)
src/client/js/JS_NAMESPACE
js code for your application
src/client/js/listing.json
an ordered listing of code for your application
src/client/less
LESS stylesheets for your application
src/client/soy
soy templates for your application
src/server
code run on the server
src/server/js
javascript run on the server
src/server/soy
soy templates used on the server.
src/tasks
grunt tasks
config
app configuration (like server port, common paths etc) used by grunt tasks. New files are automatically imported
as grunt configs and can cross-reference each other.
build
output of compilation tasks like conversion of less to css, soy templates to javascript, and closure JS compilation.
dependencies
needed binaries like node and the closure/soy compiler jars.
node_modules
node dependencies.