Crossbow CLI
Combining the best bits of npm scripts, shell commands, gulp/grunt plugins + more
Example: Crossbow allows mix'n'match of various systems, the following examples show this. In this example, we want to wipe a directory, rebuild some HTML and then minify the entire directory
- clean a dir with a shell command
- run a gulp plugin
- run an npm script
crossbow.yaml
tasks: build: - clean - crossbow - htmlmin clean: '@shell rm -rf ./public' htmlmin: > @npm html-minifier --input-dir dist --output-dir dist --collapse-whitespace
Both clean
and htmlmin
are just scripts, where crossbow
points to a file
in the tasks
directory.
var vfs = ;var crossbow = ; module { return vfs ;};
** run **
crossbow run build
Advanced file-watching system
short-hand example
watch: # default is the name of the watcher group default: # patterns are colon separated keys # tasks are any valid Crossbow tasks './scss:_scss': ['sass', 'cssmin'] '/src/*.hbs': ['@shell rm -rf dist', 'handlebars', 'htmlmin', 'manifest:dev']
long-form example
watch: default: # you can define watchers like this if # you prefer for readability watchers: - patterns: ['./scss'] tasks: ['sass', 'cssmin'] - patterns: ['/src/*.hbs'] tasks: ['handlebars', 'htmlmin', 'manifest'] tasks: # Configure tasks as above
short-hand example with options
watch: default: # `Options` can be set per-watcher. # This is especially useful when some types of # files need debouncing, but others do not options: debounce: 2000 usePolling: true # Short-hand syntax is also fine here './scss': ['sass', 'cssmin'] '/src/*.hbs': ['handlebars', 'htmlmin', 'manifest']
short-hand example with options + before tasks
watch: default: options: debounce: 2000 usePolling: true # Giving multiple 'before' tasks will ensure # that all are run + completed before any watchers # begin. They can be task names, shell scripts, js files etc before: - '@shell rm -rf dist' - '@npm browser-sync start -s' './scss': ['sass', 'cssmin'] '/src/*.hbs': ['handlebars', 'htmlmin', 'manifest']