1
1
/* 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' ) ;
8
10
9
11
var stew = require ( 'broccoli-stew' ) ;
10
12
@@ -15,51 +17,78 @@ var env = stew.env;
15
17
var map = stew . map ;
16
18
17
19
var lib = find ( 'lib' ) ;
20
+
21
+ // test stuff
18
22
var testDir = find ( 'test' ) ;
19
23
var testFiles = find ( 'test/{index.html,worker.js}' ) ;
20
24
21
25
var json3 = mv ( find ( 'node_modules/json3/lib/{json3.js}' ) , 'node_modules/json3/lib/' , 'test/' ) ;
26
+ // mocha doesn't browserify correctly
22
27
var mocha = mv ( find ( 'node_modules/mocha/mocha.{js,css}' ) , 'node_modules/mocha/' , 'test/' ) ;
23
28
24
29
var testVendor = merge ( [ json3 , mocha ] ) ;
25
30
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
+ }
30
49
} ) ;
31
50
32
- var testBundle = browserify ( merge ( [
51
+ var testBundle = watchify ( merge ( [
33
52
mv ( es6Promise , 'test' ) ,
34
53
testDir
35
54
] ) , {
36
- browserify : { entries : [ './test/index.js' ] } ,
37
- init : function ( b ) { b . external ( 'vertx' ) ; }
55
+ browserify : { debug : true , entries : [ './test/index.js' ] }
38
56
} ) ;
39
57
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 ( / V E R S I O N _ P L A C E H O L D E R _ S T R I N G / , version ( ) ) ;
47
60
} ) ;
48
61
49
- function prependLicense ( content ) {
50
- var license = fs . readFileSync ( './config/versionTemplate.txt' ) . toString ( ) . replace ( / V E R S I O N _ P L A C E H O L D E R _ S T R I N G / , version ( ) ) ;
51
- // strip source maps for now...
52
- var content = content . replace ( / \/ \/ # s o u r c e M a p p i n g U R L = e s 6 - p r o m i s e .* / , '' ) ;
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 ;
54
79
}
55
80
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
+ }
58
84
59
85
module . exports = merge ( [
60
- map ( dist , prependLicense ) ,
86
+ merge ( [
87
+ production ( es6Promise , header ) ,
88
+ development ( es6Promise , header ) ,
89
+ ] . filter ( Boolean ) ) ,
90
+ // test stuff
61
91
testFiles ,
62
92
testVendor ,
63
- mv ( dist , 'test' ) ,
64
93
mv ( testBundle , 'test' )
65
94
] ) ;
0 commit comments