UNPKG

neft

Version:

Universal Platform

79 lines (64 loc) 2.12 kB
'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 # create build folder fs.ensureDirSync './build' stack = new utils.async.Stack result = stats: {} destChangedFiles: [] hotReloads: null args = [platform, options, null, result] # create temporary 'index.js' file stack.add ((platform, options, callback) -> parseApp platform, options, (err, app) -> args[2] = app callback err ), null, args # build or hot reload 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 # create bundle files substack.add createBundle, null, args # save output if needed if options.out substack.add saveBundle, null, args substack.runAll callback ), null, args # notify callback = do (callback) -> (err) -> if options.notify or err? notify err if err? callback err, options.lastResult else callback null, result # run 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