The streaming scaffolding system - Gulp as a replacement for Yeoman
Use Gulp instead of Yeoman
Slush is a tool to be able to use Gulp for project scaffolding.
Slush does not contain anything "out of the box", except the ability to locate installed slush generators
and to run them with
To be able to provide functionality like Yeoman, see: Yeoman like behavior below.
slush globally with:
npm install -g slush
slush <generator>[:<tasks>] [<args>]
<tasks>: a colon (":") separated list of a task or tasks to run. If not provided the
defaulttask in the slushfile is run
<args>: any other given arguments (not prefixed with "--" or "-") can be accessed via the
gulp.argsproperty from within a slushfile
slush angular:component myNewComponent
Which will run task
component in generator
gulp.args will be set to
List available generators
If run without any arguments, slush will list all installed generators.
List available tasks in generator
To list available tasks within a generator, use the generator name in conjunction with the
slush <generator> --tasks
As usual you can use
--version to get the current slush version:
It can also be used together with a generator name:
slush <generator> -v
You'll then get the version for slush, the gulp version installed in the generator and the version number of the given generator.
Creating a generator
A Slush generator is an npm package following the naming convention
slush-* and containing a
slushgenerator as a keyword in your
As when building gulp plugins all slush generators need to have
gulp installed as a local dependency.
slush-* packages should be installed globally (for now) to be found by the slush executable.
Note remember to add gulp plugins (and gulp itself) as ordinary dependencies, instead of devDependencies, when building a slush generator.
Things to remember
- Install slush generators globally
- When creating slush generators:
- name them
slushgeneratoras package keyword
- create a slushfile.js
gulpand used gulp plugins for your generator as ordinary dependencies
- name them
Slush uses gulp
Slush is just the global excutable to trigger slush generators, under the hood it's still gulp that is run using each slushfile as config file.
Needing help writing slush generators? Check out Gulp's documentation!
A slushfile is basically a gulpfile, but meant to be used to scaffold project structures.
Why not name it "gulpfile" then?
Because a Slush generator may want to use gulp locally for linting, testing and other purposes, in which case it will need to have a gulpfile.
Given a slush generator project structure with a web app project template inside
./templates/app/, a slushfile could be designed like this:
var gulp =install =conflict =template =inquirer = ;gulp;
Yeoman like behavior
Use these packages/plugins:
- inquirer - To prompt the user for input
- gulp-install - To install npm and bower packages after scaffolding
- gulp-conflict - To prompt before overwriting files on regeneration
Want to contribute?
Anyone can help make this project better!