1 | var _ = require("lodash")
|
2 | , browserify = require("browserify")
|
3 | , config = require("./config")
|
4 | , concat = require("concat-stream")
|
5 | , es = require("event-stream")
|
6 | , fs = require("fs")
|
7 | , path = require("path")
|
8 | , Uglify = require("./uglify_bundle")
|
9 | , utils = require("./utils")
|
10 | , watcher = require("./watch_bundle")
|
11 |
|
12 |
|
13 | var inPaths = utils.fileIn(config.get("input"))
|
14 | var outPaths = utils.fileRegExp(config.get("ext"), config.get("output"));
|
15 |
|
16 | function bundleShare(b, fileStream) {
|
17 | b.bundle()
|
18 | .on("data", function(err){
|
19 | if(err.message)
|
20 | console.log(err.toString());
|
21 |
|
22 | })
|
23 | .pipe(fileStream());
|
24 | }
|
25 |
|
26 |
|
27 | module.exports = function(files, minify){
|
28 | minify = minify || false;
|
29 |
|
30 | var fileStream;
|
31 |
|
32 | var inputs = _.map(files, function(f){
|
33 | return inPaths(f);
|
34 | })
|
35 |
|
36 | var output = utils.setOutpaths(files, minify);
|
37 | var uglify = (minify) ? Uglify(files) : null;
|
38 |
|
39 | var bundle = browserify({entries:inputs, extensions:config.get("ext"), debug:true, cache: {}, packageCache: {}})
|
40 | if(!_.isEmpty(config.get("ignore"))){
|
41 | _.forEach(config.get("ignore"), function(ig){
|
42 | bundle.ignore(ig)
|
43 | })
|
44 | }
|
45 | var obj = {
|
46 | addTransforms:function(){
|
47 | _.forEach(config.get("transforms"), function(t){
|
48 | if(_.isArray(t)){
|
49 | bundle.transform(t[0], t[1]);
|
50 | } else {
|
51 | bundle.transform(t)
|
52 | }
|
53 |
|
54 | })
|
55 |
|
56 | return obj;
|
57 | }
|
58 | , build:function(factor){
|
59 | if(_.isUndefined(fileStream)) return;
|
60 | if(factor){
|
61 | bundle.plugin("factor-bundle", { outputs:output() });
|
62 | }
|
63 |
|
64 | bundleShare(bundle, fileStream);
|
65 | }
|
66 | , getBundle:function(){return bundle;}
|
67 | , setFileStream:function(name, server){
|
68 | if(_.isUndefined(fileStream)){
|
69 | fileStream = utils.writeFile(name, uglify, server);
|
70 | }
|
71 |
|
72 | return obj;
|
73 | }
|
74 | , watch:function(factor){
|
75 | if(_.isUndefined(fileStream)) return;
|
76 | var w = watcher(bundle, bundleShare);
|
77 | if(factor) w.addFactorBundle(output)
|
78 | w.startWatching(fileStream);
|
79 | bundleShare(bundle, fileStream);
|
80 | }
|
81 |
|
82 | }
|
83 |
|
84 | return obj;
|
85 |
|
86 | } |
\ | No newline at end of file |