UNPKG

1.38 kBJavaScriptView Raw
1var _ = require('lodash');
2var async = require('async');
3var MiaowError = require('./MiaowError');
4var Promise = require('promise');
5
6function Module() {
7}
8
9Module.prototype.doBuild = function(taskContext) {
10 if (this.__buildPromise__) {
11 return this.__buildPromise__;
12 }
13
14 var module = this;
15
16 function runTask(task, callback) {
17 var complete = _.once(function (err) {
18 completeTime && clearTimeout(completeTime);
19
20 if (err) {
21 if (!(err instanceof MiaowError)) {
22 err = new MiaowError(taskContext.src, err);
23 }
24
25 return callback(err);
26 }
27
28 callback();
29 });
30
31 var completeTime = setTimeout(function() {
32 complete(new Error(task.task.toString() + ' 任务执行超时'));
33 }, 60e3);
34
35 try {
36 task.task.call(taskContext, task.options, complete);
37 } catch (err) {
38 complete(err);
39 }
40 }
41
42 this.__buildPromise__ = new Promise(function(resolve, reject) {
43 async.eachSeries(
44 module.tasks,
45 runTask,
46 function(err) {
47 err ? reject(err) : resolve();
48 }
49 );
50 })
51 .then(function() {
52 _.assign(
53 module,
54 _.pick(
55 taskContext,
56 ['url', 'contents', 'dest', 'destHash', 'dependencies', 'emitModules', 'emitFiles', 'cacheable', 'extra']
57 )
58 );
59 });
60
61 return this.__buildPromise__;
62};
63
64module.exports = Module;