1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 |
|
60 |
|
61 |
|
62 | var pump = require("pump");
|
63 | var assignDefaultOptions = require("../assign_default_options");
|
64 | var bundle = require("../stream/bundle");
|
65 | var createBundleGraphStream = require("../graph/make_graph_with_bundles").createBundleGraphStream;
|
66 | var createWriteStream = require("../bundle/write_bundles").createWriteStream;
|
67 | var stealWriteStream = require("../stream/steal");
|
68 | var continuousBuild = require("./continuous");
|
69 | var concat = require("../bundle/concat_stream");
|
70 | var envify = require("../stream/envify");
|
71 | var minify = require("../stream/minify");
|
72 | var transpile = require("../stream/transpile");
|
73 | var treeshake = require("../stream/treeshake");
|
74 | var writeBundleManifest = require("../stream/write_bundle_manifest");
|
75 | var buildType = require("../stream/build_type");
|
76 |
|
77 |
|
78 | module.exports = function(config, options){
|
79 |
|
80 | if(!options) options = {};
|
81 |
|
82 |
|
83 | if(options.watch) {
|
84 | options = assignDefaultOptions(config, options);
|
85 | return continuousBuild(config, options);
|
86 |
|
87 | } else {
|
88 |
|
89 | options.minify = options.minify == null ? true : options.minify;
|
90 |
|
91 | try {
|
92 | options = assignDefaultOptions(config, options);
|
93 | } catch(err) {
|
94 | return Promise.reject(err);
|
95 | }
|
96 |
|
97 |
|
98 | return new Promise(function(resolve, reject) {
|
99 | var writeStream = pump(
|
100 | createBundleGraphStream(config, options),
|
101 | buildType("build"),
|
102 | treeshake(),
|
103 | transpile(),
|
104 | envify(),
|
105 | minify(),
|
106 | bundle(),
|
107 | concat(),
|
108 | createWriteStream(),
|
109 | stealWriteStream(),
|
110 | writeBundleManifest(),
|
111 | function(err) {
|
112 |
|
113 | if (err) reject(err);
|
114 | }
|
115 | );
|
116 |
|
117 | writeStream.on("data", function(builtResult){
|
118 |
|
119 | if(options){
|
120 |
|
121 | var p = Promise.resolve(builtResult);
|
122 |
|
123 | if(options.bundleAssets){
|
124 | var bundleAssets = require("steal-bundler");
|
125 | p = p.then(function(builtResult) {
|
126 | return bundleAssets(builtResult, options.bundleAssets);
|
127 | });
|
128 | }
|
129 | }
|
130 |
|
131 | p.then(function (builtResult) {
|
132 | resolve(builtResult);
|
133 | }).catch(function (error) {
|
134 | reject(error);
|
135 | });
|
136 | });
|
137 | });
|
138 | }
|
139 | };
|