neft
Version:
Universal Platform
79 lines (64 loc) • 2.12 kB
text/coffeescript
'use strict'
fs = require 'fs-extra'
utils = require 'src/utils'
log = require 'src/log'
notify = require './notify'
parseApp = require './parse'
createBundle = require './bundle'
saveBundle = require './saveBundle'
hotReloader = require './hotReloader'
log = log.scope 'build'
Log = Neft.log.constructor
module.exports = (platform, options, callback) ->
log.info platform
fs.ensureDirSync './build'
stack = new utils.async.Stack
result =
stats: {}
destChangedFiles: []
hotReloads: null
args = [platform, options, null, result]
stack.add ((platform, options, callback) ->
parseApp platform, options, (err, app) ->
args[2] = app
callback err
), null, args
stack.add ((platform, options, app, result, callback) ->
hotReloader.prepare options, result, (err) ->
if err
return callback err
if options.watch and hotReloader.canUse(platform, options, result)
result.hotReloads = []
hotReloader.resolve platform, options, result, callback
else
substack = new utils.async.Stack
substack.add createBundle, null, args
if options.out
substack.add saveBundle, null, args
substack.runAll callback
), null, args
callback = do (callback) -> (err) ->
if options.notify or err?
notify err
if err?
callback err, options.lastResult
else
callback null, result
stack.runAll (err) ->
log.show ''
if err
if err?.message then log.error err.message
if err?.stack then log.error err.stack
if not err?.message and not err?.stack
log.error err
log.error platform
else
log.ok platform
callback err