1 | var pump = require("pump");
|
2 | var assign = require("lodash/assign");
|
3 | var minify = require("../stream/minify");
|
4 | var transpile = require("../stream/transpile");
|
5 | var concat = require("../bundle/concat_stream");
|
6 | var makeBundle = require("../stream/make_bundle");
|
7 | var filterBundleGraph = require("../stream/filter_bundle_graph");
|
8 |
|
9 | var assignDefaultOptions = require("../assign_default_options");
|
10 | var createWriteStream = require("../bundle/write_bundles").createWriteStream;
|
11 | var createBundleGraphStream = require("../graph/make_graph_with_bundles")
|
12 | .createBundleGraphStream;
|
13 |
|
14 | module.exports = function(cfg, options) {
|
15 |
|
16 | if (!options) options = {};
|
17 |
|
18 | var isDestProvided = !!options.dest;
|
19 |
|
20 |
|
21 | options.minify = options.minify == null ? false : options.minify;
|
22 |
|
23 |
|
24 | var config = Object.assign({ treeShaking: false }, cfg);
|
25 |
|
26 | try {
|
27 | options = assignDefaultOptions(config, options);
|
28 | } catch(err) {
|
29 | return Promise.reject(err);
|
30 | }
|
31 |
|
32 |
|
33 |
|
34 | assign(options, {
|
35 | defaultBundlesPathName: "",
|
36 | dest: isDestProvided ? options.dest : "",
|
37 | buildStealConfig: {
|
38 | env: "bundle-build"
|
39 | },
|
40 |
|
41 |
|
42 | removeDevelopmentCode: false
|
43 | });
|
44 |
|
45 | return new Promise(function(resolve, reject) {
|
46 | var writeStream = pump(
|
47 | createBundleGraphStream(config, options),
|
48 | filterBundleGraph(),
|
49 | transpile(),
|
50 | minify(),
|
51 | makeBundle(),
|
52 | concat(),
|
53 | createWriteStream(),
|
54 | function(err) {
|
55 | if (err) reject(err);
|
56 | }
|
57 | );
|
58 |
|
59 | writeStream.on("data", function(data){
|
60 | this.end();
|
61 | resolve(data);
|
62 | });
|
63 | });
|
64 | };
|