node package manager
Stop wasting time. Easily manage code sharing in your team. Create a free org »

gladius-forge

gladius-forge

Build Status dependency Status devDependency Status

Prebuilt Gulp environment for cutting edge web app boilerplates.

Why Gladius? Because I wanted to emphasize the "bleeding edge" aspect of this tool, and what's better than a sword name to describe cutting edges? Plus I'm roman, hence "Gladius" (and also because Katana was already taken :P)

It comes with an ES2015+ (ES2016 async/await are there) to ES3-ish (as IE8 compatible as possible, but you may have to import polyfills, shims and shams accordingly) compilation process, together with a Browserify bundling and Uglifyjs compression.

Plus a CSS compilation task, to choose from one of the following:

  • LESS
  • Sass
  • SCSS + Compass
  • Myth
  • Stylus

as well as an Autoprefixer, post compilation, process (bye bye vendor prefixes).

Also, templates precompilation process, to choose from one of the following:

  • Handlebars
  • Dust
  • Dot.js
  • Jade

the task compiles templates in JST format, namespaces them under an R.templates globally accessible variable and serves it to you in the form of a template.js module inside your static scripts folder.

You can also rely on a Karma tests runner, with PhantomJS and Google Chrome engines (bring your own karma.config.js file, though), plus JSHint code check and JSValidate safety checks on critical tasks.

It also gives you the possibility to serve your own instance of a Node.js server, plus watchers and livereloading for, well, everything really.

Bonus: version bumping and git tagging/pushing tasks.

TODO:

  • Split compiled templates on a per-page basis (base folder separation).
  • Introduce a super light static page server (now it relies on the final user to feed it one)

Usage

The easiest way to use gladius-forge is via the slush-gladius slush generator, otherwise proceed manually, following the instructions below.

Install gladius-forge into your project directory:

npm install --save gladius-forge

Copy the gulpfile-sample.js from node_modules/gladius-forge into your app folder and configure it the way you like. The configuration is pretty straightforward and the comments will help you out on every bits of it.

You can also take a look at the gladius-draft's gulpfile.js to see how you can extend default tasks, add your own tasks or watchers, etc.

By default, the boilerplate will come with the following tasks, which you can extend or override as you please:

DEFAULTS

production: it will run the basic compilation + compression tasks, without tests other than the JSValidate one to make sure everything worked fine.

development: it will run compilation tasks (no compression) with sourcemaps support, plus it will run watchers to recompile and livereload everything as soon as you make some changes, plus Karma in watch mode.

test: it will just run the tests without watchers (useful for CI engines).

release, feature and patch are special tasks that handle the bump of the version on the package.json as well as the bower.json if present, plus the tagging on your git repo, and the push to master of the newly generated tag.

TODO

  • List all the other tasks

Notes

The boilerplate comes with a very basic set of dependencies installed via NPM. The remaining modules needed by each task will be lazily installed during the pre-process phase of each default task.

This way makes it possible to have the smallest amount of dependencies needed to be installed for the production task, that reflects on an massive reduction of the installation footprint on production environment.

Thanks

This boilerplate of mine is just a combination of great tools put together to achieve higher goals (using cutting edge technologies today, greatly simplifying a developer's workflow, etc), and if it weren't for the people who built those tools, I wouldn't have made this little thing so far.

So, thanks goes to:

  • babel developers and contributors, that are giving us the possibility to use ES2015 syntax today, in the most lightweight way possible.
  • The Gulp developers. Keep up the good work, looking forward for the v4.0.
  • People behind Browserify, because CommonJS is the right thing!
  • Karma, JSHint and gulp-jsvalidate developers, keeping our code safe.
  • All the great guys that brought to us those awesome gulp plugins, the list is long, so thank you all.