1 | var createBundleGraphStream = require("../graph/make_graph_with_bundles").createBundleGraphStream;
|
2 | var recycle = require("../graph/recycle");
|
3 | var multiBuild = require("../stream/build");
|
4 | var createConcatStream = require("../bundle/concat_stream");
|
5 | var createWriteStream = require("../bundle/write_bundles").createWriteStream;
|
6 | var stealWriteStream = require("../stream/steal");
|
7 | var watch = require("../stream/watch");
|
8 | var defaults = require("lodash").defaults;
|
9 |
|
10 | module.exports = function(config, options){
|
11 | var moment = require("moment");
|
12 |
|
13 | defaults(options, {
|
14 | sourceMaps: true,
|
15 | minify: false,
|
16 | quiet: true
|
17 | });
|
18 |
|
19 | var moduleName;
|
20 |
|
21 |
|
22 |
|
23 | function rebuild(moduleNames){
|
24 | moduleName = moduleNames[0] || "";
|
25 | moduleNames.forEach(function(moduleName){
|
26 | graphStream.write(moduleName);
|
27 | });
|
28 | }
|
29 |
|
30 | function log(){
|
31 | var rebuiltPart = moduleName ? moduleName : "";
|
32 | var time = "[" + moment().format("LTS") + "]";
|
33 | console.error(time.red + (moduleName ? ":" : ""), rebuiltPart.green);
|
34 | }
|
35 |
|
36 |
|
37 | var initialGraphStream = createBundleGraphStream(config, options);
|
38 |
|
39 | var graphStream = recycle(config);
|
40 |
|
41 |
|
42 |
|
43 | var buildStream = initialGraphStream
|
44 | .pipe(graphStream)
|
45 | .pipe(multiBuild(config, options))
|
46 | .pipe(createConcatStream())
|
47 | .pipe(createWriteStream())
|
48 | .pipe(stealWriteStream());
|
49 |
|
50 |
|
51 | var watchStream = watch(graphStream);
|
52 | watchStream.on("data", rebuild);
|
53 |
|
54 | buildStream.on("data", log);
|
55 | graphStream.on("error", function(error){
|
56 |
|
57 | if(error.code === "ENOENT" && error.path) {
|
58 | console.error("File not found:", error.path);
|
59 | watchStream.write(error.path);
|
60 | }
|
61 | });
|
62 | buildStream.once("data", function(){
|
63 | console.error("Watch mode ready.");
|
64 | });
|
65 |
|
66 | return buildStream;
|
67 | };
|