Skip to content

Commit b888a28

Browse files
authored
Merge pull request #229 from stefanpenner/updates
upgrade build
2 parents bc8041b + 9cb1f81 commit b888a28

21 files changed

+1327
-1141
lines changed

Brocfile.js

Lines changed: 58 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
/* jshint node:true, undef:true, unused:true */
2-
var compileModules = require('broccoli-es6-module-transpiler');
3-
var merge = require('broccoli-merge-trees');
4-
var uglify = require('broccoli-uglify-js');
5-
var version = require('git-repo-version');
6-
var browserify = require('broccoli-watchify');
7-
var fs = require('fs');
2+
var Rollup = require('broccoli-rollup');
3+
var Babel = require('broccoli-babel-transpiler');
4+
var merge = require('broccoli-merge-trees');
5+
var uglify = require('broccoli-uglify-js');
6+
var version = require('git-repo-version');
7+
var watchify = require('broccoli-watchify');
8+
var concat = require('broccoli-concat');
9+
var fs = require('fs');
810

911
var stew = require('broccoli-stew');
1012

@@ -15,51 +17,78 @@ var env = stew.env;
1517
var map = stew.map;
1618

1719
var lib = find('lib');
20+
21+
// test stuff
1822
var testDir = find('test');
1923
var testFiles = find('test/{index.html,worker.js}');
2024

2125
var json3 = mv(find('node_modules/json3/lib/{json3.js}'), 'node_modules/json3/lib/', 'test/');
26+
// mocha doesn't browserify correctly
2227
var mocha = mv(find('node_modules/mocha/mocha.{js,css}'), 'node_modules/mocha/', 'test/');
2328

2429
var testVendor = merge([ json3, mocha ]);
2530

26-
var es6Promise = compileModules(lib, {
27-
format: 'bundle',
28-
entry: 'es6-promise.umd.js',
29-
output: 'es6-promise.js'
31+
32+
var es5 = new Babel(lib, {
33+
blacklist: ['es6.modules']
34+
});
35+
36+
// build RSVP itself
37+
var es6Promise = new Rollup(es5, {
38+
rollup: {
39+
entry: 'lib/es6-promise.js',
40+
targets: [
41+
{
42+
format: 'umd',
43+
moduleName: 'ES6Promise',
44+
dest: 'es6-promise.js',
45+
sourceMap: 'inline'
46+
}
47+
]
48+
}
3049
});
3150

32-
var testBundle = browserify(merge([
51+
var testBundle = watchify(merge([
3352
mv(es6Promise, 'test'),
3453
testDir
3554
]), {
36-
browserify: { entries: ['./test/index.js'] },
37-
init: function (b) { b.external('vertx'); }
55+
browserify: { debug: true, entries: ['./test/index.js'] }
3856
});
3957

40-
var dist = es6Promise;
41-
42-
env('production', function() {
43-
dist = merge([
44-
rename(uglify(dist, { mangle: true, compress: true }), '.js', '.min.js'),
45-
dist
46-
]);
58+
var header = stew.map(find('config/versionTemplate.txt'), function(content) {
59+
return content.replace(/VERSION_PLACEHOLDER_STRING/, version());
4760
});
4861

49-
function prependLicense(content) {
50-
var license = fs.readFileSync('./config/versionTemplate.txt').toString().replace(/VERSION_PLACEHOLDER_STRING/, version());
51-
// strip source maps for now...
52-
var content = content.replace(/\/\/# sourceMappingURL=es6-promise.*/,'');
53-
return license + '\n' + content;
62+
function concatAs(tree, outputFile) {
63+
return concat(merge([tree, header]), {
64+
headerFiles: ['config/versionTemplate.txt'],
65+
inputFiles: ['es6-promise.js'],
66+
outputFile: outputFile
67+
});
68+
}
69+
70+
function production(dist, header) {
71+
var result;
72+
env('production', function(){
73+
result = uglify(concatAs(dist, 'es6-promise.min.js'), {
74+
compress: true,
75+
mangle: true,
76+
});
77+
})
78+
return result;
5479
}
5580

56-
// exclude source maps for now, until map/cat supports source maps
57-
dist = find(dist, '!*.map');
81+
function development(dist, header) {
82+
return concatAs(dist, 'es6-promise.js');
83+
}
5884

5985
module.exports = merge([
60-
map(dist, prependLicense),
86+
merge([
87+
production(es6Promise, header),
88+
development(es6Promise, header),
89+
].filter(Boolean)),
90+
// test stuff
6191
testFiles,
6292
testVendor,
63-
mv(dist, 'test'),
6493
mv(testBundle, 'test')
6594
]);

0 commit comments

Comments
 (0)