bankai
Advanced tools
Comparing version 5.4.1 to 5.5.0
101
bin.js
#!/usr/bin/env node | ||
var explain = require('explain-error') | ||
var pinoColada = require('pino-colada') | ||
var mapLimit = require('map-limit') | ||
var serverSink = require('server-sink') | ||
var resolve = require('resolve') | ||
var garnish = require('garnish') | ||
var mkdirp = require('mkdirp') | ||
var subarg = require('subarg') | ||
var bole = require('bole') | ||
var xtend = require('xtend') | ||
var http = require('http') | ||
var path = require('path') | ||
var pino = require('pino') | ||
var pump = require('pump') | ||
@@ -17,2 +19,5 @@ var opn = require('opn') | ||
var bankai = require('./') | ||
var pretty = pinoColada() | ||
var log = pino({ name: 'bankai', level: 'debug' }, pretty) | ||
pretty.pipe(process.stdout) | ||
@@ -85,6 +90,5 @@ var argv = subarg(process.argv.slice(2), { | ||
var outputDir = argv._[2] || 'dist' | ||
startLogging(argv.verbose) | ||
if (argv.h) { | ||
console.info(usage) | ||
log.info(usage) | ||
return process.exit() | ||
@@ -94,3 +98,3 @@ } | ||
if (argv.v) { | ||
console.info(require('../package.json').version) | ||
log.info(require('../package.json').version) | ||
return process.exit() | ||
@@ -102,8 +106,5 @@ } | ||
} else if (cmd === 'build') { | ||
build(entry, outputDir, argv, function (err) { | ||
if (err) throw err | ||
process.exit() | ||
}) | ||
build(entry, outputDir, argv, handleError) | ||
} else { | ||
console.error(usage) | ||
log.error(usage) | ||
return process.exit(1) | ||
@@ -113,3 +114,3 @@ } | ||
function handleError (err) { | ||
if (err) throw err | ||
if (err) log.error(err) | ||
} | ||
@@ -123,21 +124,30 @@ } | ||
http.createServer(function (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: | ||
if (req.headers['accept'].indexOf('html') > 0) { | ||
return assets.html(req, res).pipe(res) | ||
} | ||
if (staticAsset.test(req.url)) { | ||
return assets.static(req, res).pipe(res) | ||
} | ||
res.writeHead(404, 'Not Found') | ||
return res.end() | ||
var server = http.createServer(handler) | ||
server.listen(port, onlisten) | ||
function handler (req, res) { | ||
var sink = serverSink(req, res, function (msg) { | ||
log.info(msg) | ||
}) | ||
if (req.url === '/') { | ||
assets.html(req, res).pipe(sink) | ||
} else if (req.url === '/bundle.js') { | ||
assets.js(req, res).pipe(sink) | ||
} else if (req.url === '/bundle.css') { | ||
assets.css(req, res).pipe(sink) | ||
} else if (req.headers['accept'].indexOf('html') > 0) { | ||
assets.html(req, res).pipe(sink) | ||
} else if (staticAsset.test(req.url)) { | ||
assets.static(req, res).pipe(sink) | ||
} else { | ||
res.writeHead(404, 'Not Found') | ||
sink.end() | ||
} | ||
}).listen(port, function () { | ||
} | ||
function onlisten () { | ||
var relative = path.relative(process.cwd(), entry) | ||
var addr = 'http://localhost:' + port | ||
console.info('Started bankai for', relative, 'on', addr) | ||
log.info('Started for ' + relative + ' on ' + addr) | ||
if (argv.open !== false) { | ||
@@ -151,15 +161,25 @@ var app = (argv.open.length) ? argv.open : 'system browser' | ||
} | ||
}) | ||
} | ||
} | ||
function build (entry, outputDir, argv, done) { | ||
log.info('bundling assets') | ||
argv = xtend({ watch: false }, argv) | ||
mkdirp.sync(outputDir) | ||
buildStaticAssets(entry, outputDir, argv, done) | ||
var assets = bankai(entry, argv) | ||
var files = [ 'index.html', 'bundle.js', 'bundle.css' ] | ||
mapLimit(files, Infinity, iterator, done) | ||
function iterator (file, done) { | ||
var file$ = fs.createWriteStream(path.join(outputDir, file)) | ||
var source$ = assets[file.replace(/^.*\./, '')]() | ||
pump(source$, file$, done) | ||
var fileStream = fs.createWriteStream(path.join(outputDir, file)) | ||
var sourceStream = assets[file.replace(/^.*\./, '')]() | ||
log.debug(file + ' started') | ||
pump(sourceStream, fileStream, function (err) { | ||
log.info(file + ' done') | ||
done(err) | ||
}) | ||
} | ||
@@ -172,5 +192,15 @@ } | ||
if (fs.existsSync(src)) copy(src, dest) | ||
function copy (src, dest) { | ||
if (!fs.statSync(src).isDirectory()) { | ||
return pump(fs.createReadStream(src), fs.createWriteStream(dest), done) | ||
var relativeName = path.relative(path.join(argv.assets, '../'), src) | ||
log.debug(relativeName + ' started') | ||
return pump(fs.createReadStream(src), fs.createWriteStream(dest), function (err) { | ||
if (err) { | ||
log.error(relativeName + ' error') | ||
return done(err) | ||
} | ||
log.info(relativeName + ' done') | ||
done() | ||
}) | ||
} | ||
@@ -184,8 +214,1 @@ if (!fs.existsSync(dest)) fs.mkdirSync(dest) | ||
} | ||
function startLogging (verbose) { | ||
var level = (verbose) ? 'debug' : 'info' | ||
var pretty = garnish({ level: level, name: 'bankai' }) | ||
pretty.pipe(process.stdout) | ||
bole.output({ stream: pretty, level: level }) | ||
} |
27
index.js
@@ -35,2 +35,3 @@ var collapser = require('bundle-collapser/plugin') | ||
this.optimize = opts.optimize | ||
this.watch = opts.watch | ||
this.cssQueue = [] | ||
@@ -44,6 +45,9 @@ | ||
this._html = (function () { | ||
this._html = html() | ||
this._js = js() | ||
function html () { | ||
var base = { | ||
script: 'bundle.js', | ||
css: (self.cssDisabled) ? null : 'bundle.css', | ||
css: self.cssDisabled ? null : 'bundle.css', | ||
head: '<meta name="viewport" content="width=device-width, initial-scale=1">' | ||
@@ -53,5 +57,5 @@ } | ||
return new Buffer(html) | ||
})() | ||
} | ||
this._js = (function () { | ||
function js () { | ||
var base = { | ||
@@ -66,3 +70,3 @@ basedir: process.cwd(), | ||
var b = (self.optimize) | ||
var b = self.optimize || self.watch === false | ||
? browserify(jsOpts) | ||
@@ -80,3 +84,2 @@ : watchify(browserify(jsOpts)) | ||
b.transform(yoyoify, { global: true }) | ||
// b.transform(varify, { global: true }) | ||
b.transform(uglifyify, { global: true }) | ||
@@ -94,3 +97,3 @@ b.plugin(collapser, { global: true }) | ||
} | ||
})() | ||
} | ||
} | ||
@@ -100,9 +103,9 @@ | ||
Bankai.prototype.js = function (req, res) { | ||
var through$ = new stream.PassThrough() | ||
var throughStream = new stream.PassThrough() | ||
this._js(req, res, function (err, buffer) { | ||
if (err) return through$.emit('error', err) | ||
var source$ = from([buffer]) | ||
pump(source$, through$) | ||
if (err) return throughStream.emit('error', err) | ||
var sourceStream = from([buffer]) | ||
pump(sourceStream, throughStream) | ||
}) | ||
return through$ | ||
return throughStream | ||
} | ||
@@ -109,0 +112,0 @@ |
{ | ||
"name": "bankai", | ||
"version": "5.4.1", | ||
"version": "5.5.0", | ||
"description": "DIY asset server", | ||
@@ -30,3 +30,2 @@ "main": "index.js", | ||
"dependencies": { | ||
"bole": "^3.0.1", | ||
"browserify": "^14.0.0", | ||
@@ -39,9 +38,11 @@ "bundle-collapser": "^1.2.1", | ||
"from2": "^2.3.0", | ||
"garnish": "^5.2.0", | ||
"map-limit": "0.0.1", | ||
"mkdirp": "^0.5.1", | ||
"opn": "^4.0.2", | ||
"pino": "^4.0.3", | ||
"pino-colada": "^1.1.0", | ||
"pump": "^1.0.1", | ||
"resolve": "^1.1.7", | ||
"send": "^0.15.0", | ||
"server-sink": "^1.0.0", | ||
"sheetify": "^6.0.1", | ||
@@ -48,0 +49,0 @@ "subarg": "^1.0.0", |
@@ -131,2 +131,3 @@ <h1 align="center">bankai</h1> | ||
output and optimize all bundles | ||
- __opts.watch:__ Disable livereload scripts | ||
@@ -133,0 +134,0 @@ ### readableStream = assets.js(req?, res?) |
18070
304
160
24
+ Addedpino@^4.0.3
+ Addedpino-colada@^1.1.0
+ Addedserver-sink@^1.0.0
+ Addedansi-styles@3.2.1(transitive)
+ Addedchalk@2.4.2(transitive)
+ Addedcolor-convert@1.9.3(transitive)
+ Addedcolor-name@1.1.3(transitive)
+ Addedfast-json-parse@1.0.3(transitive)
+ Addedfast-safe-stringify@1.2.3(transitive)
+ Addedflatstr@1.0.12(transitive)
+ Addedhas-flag@3.0.0(transitive)
+ Addedhttp-ndjson@3.1.0(transitive)
+ Addedpino@4.17.6(transitive)
+ Addedpino-colada@1.6.1(transitive)
+ Addedpino-std-serializers@2.5.0(transitive)
+ Addedpump@3.0.0(transitive)
+ Addedquick-format-unescaped@1.1.2(transitive)
+ Addedserver-sink@1.0.0(transitive)
+ Addedsize-stream@1.0.1(transitive)
+ Addedsplit2@2.2.0(transitive)
+ Addedsupports-color@5.5.0(transitive)
- Removedbole@^3.0.1
- Removedgarnish@^5.2.0
- Removedansi-regex@0.2.1(transitive)
- Removedansi-styles@1.1.0(transitive)
- Removedbole@3.0.2(transitive)
- Removedchalk@0.5.1(transitive)
- Removedfast-safe-stringify@1.1.13(transitive)
- Removedgarnish@5.2.0(transitive)
- Removedhas-ansi@0.1.0(transitive)
- Removedindividual@3.0.0(transitive)
- Removedright-now@1.0.0(transitive)
- Removedsplit2@0.2.1(transitive)
- Removedstdout-stream@1.4.1(transitive)
- Removedstrip-ansi@0.3.0(transitive)
- Removedsupports-color@0.2.0(transitive)
- Removedthrough2@0.6.5(transitive)
- Removedurl-trim@1.0.0(transitive)