Skip to content

Commit 799b171

Browse files
committed
For production, use a bundle of all packages
1 parent 3dd0877 commit 799b171

File tree

6 files changed

+70
-33
lines changed

6 files changed

+70
-33
lines changed

editor/collections/packages.js

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
var Q = require("q");
22
var _ = require("hr.utils");
3+
var $ = require("jquery");
34
var Collection = require("hr.collection");
45
var logger = require("hr.logger")("packages");
56

@@ -16,38 +17,42 @@ var Packages = Collection.extend({
1617
.then(this.reset.bind(this));
1718
},
1819

19-
// Load all plugins from backend
20-
loadAll: function() {
20+
// Load all plugins from backend (using bundle)
21+
loadAll: function(bundle) {
2122
var that = this;
2223
var errors = [];
2324

24-
return this.listAll()
25-
.then(function() {
26-
return that.reduce(function(prev, pkg) {
27-
errors = errors.concat(_.map(pkg.get("errors"), function(e) {
28-
return {
29-
'name': pkg.get("name"),
30-
'error': e
31-
};
32-
}));
33-
34-
return prev.then(pkg.load.bind(pkg))
35-
.fail(function(err) {
36-
errors.push({
37-
'name': pkg.get("name"),
38-
'error': err
25+
if (bundle) {
26+
return Q($.getScript("/packages.js"));
27+
} else {
28+
return this.listAll()
29+
.then(function() {
30+
return that.reduce(function(prev, pkg) {
31+
errors = errors.concat(_.map(pkg.get("errors"), function(e) {
32+
return {
33+
'name': pkg.get("name"),
34+
'error': e
35+
};
36+
}));
37+
38+
return prev.then(pkg.load.bind(pkg))
39+
.fail(function(err) {
40+
errors.push({
41+
'name': pkg.get("name"),
42+
'error': err
43+
});
44+
return Q();
3945
});
40-
return Q();
41-
});
42-
}, Q());
43-
})
44-
.then(function() {
45-
if (errors.length > 0) {
46-
var e = new Error("Error loading packages");
47-
e.errors = errors;
48-
return Q.reject(e);
49-
}
50-
});
46+
}, Q());
47+
})
48+
.then(function() {
49+
if (errors.length > 0) {
50+
var e = new Error("Error loading packages");
51+
e.errors = errors;
52+
return Q.reject(e);
53+
}
54+
});
55+
}
5156
}
5257
});
5358

editor/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ Q.delay(500)
6060
]);
6161
})
6262
.then(function() {
63-
return packages.loadAll()
63+
return packages.loadAll(!codebox.workspace.get('debug'))
6464
.fail(function(err) {
6565
var message = "<p>"+err.message+"</p>";
6666
if (err.errors) {

lib/index.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,13 @@ var start = function(config) {
185185
app.use('/packages', _middleware(function() {
186186
return express.static(config.packages.root);
187187
}));
188+
app.get('/packages.js', function(req, res, next) {
189+
return packages.bundle()
190+
.then(function(fp) {
191+
fs.createReadStream(fp).pipe(res);
192+
})
193+
.fail(next);
194+
});
188195

189196
// RPC services
190197
app.use('/rpc', rpc.router);

lib/packages.js

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
var Q = require("q");
22
var _ = require("lodash");
33
var fs = require("fs");
4+
var os = require("os");
45
var path = require("path");
56
var wrench = require("wrench");
67
var Packager = require("pkgm");
@@ -107,6 +108,9 @@ var init = function(config) {
107108
.then(function() {
108109
if (!config.run) return;
109110
return manager.runAll(context);
111+
})
112+
.then(function() {
113+
return bundle(true);
110114
});
111115
};
112116

@@ -115,6 +119,9 @@ var install = function(url) {
115119
.then(function(pkg) {
116120
return pkg.run(context)
117121
.thenResolve(pkg);
122+
})
123+
.then(function() {
124+
return bundle(true);
118125
});
119126
};
120127

@@ -126,10 +133,27 @@ var list = function() {
126133
return manager.orderedPackages();
127134
};
128135

136+
var bundle = function(force) {
137+
var pkgBundle = path.resolve(os.tmpdir(), 'codebox-bundle.js');
138+
139+
return Q()
140+
.then(function() {
141+
if (fs.existsSync(pkgBundle) && force != true) return;
142+
console.log("bundle into", pkgBundle);
143+
return manager.bundleAll(pkgBundle);
144+
})
145+
.then(function() {
146+
return pkgBundle;
147+
});
148+
};
149+
129150
module.exports = {
130151
init: init,
131-
manager: manager,
152+
manager: function() {
153+
return manager;
154+
},
132155
install: install,
133156
uninstall: uninstall,
134-
list: list
157+
list: list,
158+
bundle: bundle
135159
};

lib/services/codebox.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ var about = function(args) {
99
return {
1010
'id': workspace.config('id'),
1111
'title': workspace.config('title'),
12-
'version': pkg.version
12+
'version': pkg.version,
13+
'debug': workspace.config('debug')
1314
};
1415
};
1516

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"dependencies": {
3030
"q": "~1.2.0",
3131
"lodash": "2.4.1",
32-
"pkgm": "3.2.0",
32+
"pkgm": "3.3.0",
3333
"express": "4.6.1",
3434
"express-session": "1.7.0",
3535
"wrench": "1.5.8",

0 commit comments

Comments
 (0)