crossbow-cli
TypeScript icon, indicating that this package has built-in type declarations

3.6.1 • Public • Published

Build Status

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 = require('vinyl-fs');
var crossbow = require('crossbow');
 
module.exports = function (options) {
    return vfs.src(options.input)
        .pipe(crossbow.stream({
            config: options.config,
            data: options.data
        }))
        .pipe(vfs.dest(options.output));
};
 

** 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']

Readme

Keywords

none

Package Sidebar

Install

npm i crossbow-cli

Weekly Downloads

4

Version

3.6.1

License

ISC

Last publish

Collaborators

  • shakyshane