node package manager

bankai

DIY asset server

bankai

Streaming asset compiler
Serve, compile and optimize assets

API stability NPM version Build Status Test Coverage Downloads Standard

Installation

$ npm install bankai

Usage

Given the following client.js:

var css = require('sheetify')
var html = require('bel')
 
var prefix = css`
  :host > h1 { font-size: 12rem }
`
 
var el = html`
  <section class=${prefix}>
    <h1>hello planet</h1>
  </section>
`
 
document.body.appendChild(el)

Render with server.js:

var bankai = require('bankai')
var http = require('http')
var path = require('path')
 
var clientPath = path.join(__dirname, 'client.js')
var assets = bankai(clientPath)
 
http.createServer((req, res) => {
  switch (req.url) {
    case '/': return assets.html(req, res).pipe(res)
    case '/bundle.js': return assets.js(req, res).pipe(res)
    case '/bundle.css': return assets.css(req, res).pipe(res)
    default: return (res.statusCode = 404 && res.end('404 not found'))
  }
}).listen(8080)

CLI

  Usage:
    $ bankai <command> [options]
 
  Commands:
    <default>                      Run 'bankai start'
    start <filename>               Start a bankai server
    build <filename> <directory>   Compile and export files to a directory
 
    Options:
      -c, --css=<subargs>     Pass subarguments to sheetify
      -d, --debug             Include sourcemaps [default: false]
      -h, --help              Print usage
      -H, --html=<subargs>    Pass subarguments to create-html
      -j, --js=<subargs>      Pass subarguments to browserify
      -o, --open=<browser>    Open html in a browser [default: system default]
      -O, --optimize          Optimize assets served by bankai [default: false]
      -p, --port=<n>          Bind bankai to a port [default: 8080]
      -V, --verbose           Include debug messages
 
  Examples:
    $ bankai index.js -p 8080            # start bankai on port 8080
    $ bankai index.js --open             # open html in the browser
    $ bankai -c [ -u sheetify-cssnext ]  # use cssnext in sheetify
    $ bankai -j [ -t brfs ]              # use brfs in browserify
    $ bankai build index.js dist/        # compile and export to dist/
    $ bankai build -O index.js dist/     # optimize compiled files

API

assets = bankai(entryFile, opts?)

Create a new instance of bankai. The first argument is a route to the entry file that is compiled by browserify. The second argument is optional and can take the following options:

  • opts.js: (default: {}). Pass options to browserify. Cannot be disabled
  • opts.css: (default: {}). Pass options to sheetify. Set to false to disable
  • opts.html: (default: {}). Pass options to create-html. Set to false to disable
  • opts.optimize: (default false). Disable livereload scripts, cache output and optimize all bundles

readableStream = assets.js(req?, res?)

Return a js stream. Sets correct header values if req and res are passed.

readableStream = assets.html(req?, res?)

Return a html stream. Sets correct header values if req and res are passed.

readableStream = assets.css(req?, res?)

Return a css stream. Sets correct header values if req and res are passed.

See Also

License

MIT