UNPKG

doushio

Version:
73 lines (67 loc) 1.67 kB
var async = require('async'), crypto = require('crypto'), deps = require('./deps'), etc = require('./etc'), fs = require('fs'), make_client = require('./make_client'), tmp_file = require('tmp').file; function (cb) { var md5 = crypto.createHash('MD5'); tmp_file({dir: '.build', postfix: '.gen.js'}, function (err, tmp, fd) { if (err) return cb(err); var stream = fs.createWriteStream(null, {fd: fd}); stream.once('error', cb); async.eachSeries(deps.VENDOR_DEPS, function (file, cb) { fs.readFile(file, function (err, buf) { if (err) return cb(err); md5.update(buf); stream.write(buf); md5.update('\n'); stream.write('\n'); cb(null); }); }, function (err) { if (err) return cb(err); var hash = md5.digest('hex').slice(0, 10); var fnm = 'vendor-' + hash + '.min.js'; stream.end(function () { etc.move(tmp, 'www/js/'+fnm, function (err) { if (err) return cb(err); cb(null, fnm); }); }); }); }); } function commit_assets(metadata, cb) { tmp_file({dir: '.build', postfix: '.json'}, function (err, tmp, fd) { if (err) return cb(err); var stream = fs.createWriteStream(null, {fd: fd}); stream.once('error', cb); stream.end(JSON.stringify(metadata) + '\n', function () { etc.move(tmp, 'assets.json', cb); }); }); } function build(cb) { etc.checked_mkdir('.build', function (err) { if (err) return cb(err); build_vendor_js(function (err, vendorjs) { if (err) return cb(err); commit_assets({ vendor: vendorjs, }, cb); }); }); } if (require.main === module) { build(function (err) { if (err) throw err; }); }