7
7
'use strict' ;
8
8
9
9
const path = require ( 'path' ) ;
10
- const rollup = require ( 'rollup' ) . rollup ;
11
- const rollupResolve = require ( 'rollup-plugin-node-resolve' ) ;
12
- const rollupCommonjs = require ( 'rollup-plugin-commonjs' ) ;
13
- const rollupBuiltins = require ( 'rollup-plugin-node-builtins' ) ;
14
- const rollupJson = require ( 'rollup-plugin-json' ) ;
15
- const rollupBabel = require ( 'rollup-plugin-babel' ) ;
16
- const rollupFlow = require ( 'rollup-plugin-flow' ) ;
10
+ const webpack = require ( 'webpack' ) ;
11
+ const camelCase = require ( 'camelcase' ) ;
12
+ const rimraf = require ( 'rimraf' ) ;
17
13
18
14
const babelEs5Options = {
19
15
// Dont load other config files
@@ -24,43 +20,64 @@ const babelEs5Options = {
24
20
[
25
21
'@babel/preset-env' ,
26
22
{
27
- // Required for Rollup
28
- modules : false ,
23
+ // Required for Webpack
24
+ modules : 'cjs' ,
29
25
shippedProposals : true ,
30
26
// Target ES5
31
27
targets : 'IE 11' ,
32
28
} ,
33
29
] ,
34
30
'@babel/preset-flow' ,
35
31
] ,
36
- runtimeHelpers : true ,
37
32
} ;
38
33
39
34
function browserBuild ( pkgName , entryPath , destination ) {
40
- return rollup ( {
41
- input : entryPath ,
42
- plugins : [
35
+ rimraf . sync ( destination ) ;
36
+
37
+ return new Promise ( ( resolve , reject ) => {
38
+ webpack (
39
+ /* eslint-disable sort-keys */
43
40
{
44
- resolveId ( id ) {
45
- return id === 'chalk'
46
- ? path . resolve ( __dirname , '../packages/expect/build/fakeChalk.js' )
47
- : undefined ;
41
+ mode : 'development' ,
42
+ devtool : 'source-map' ,
43
+ entry : entryPath ,
44
+ output : {
45
+ path : path . dirname ( destination ) ,
46
+ library : camelCase ( pkgName ) ,
47
+ libraryTarget : 'umd' ,
48
+ filename : path . basename ( destination ) ,
49
+ } ,
50
+ module : {
51
+ rules : [
52
+ {
53
+ test : / \. [ j t ] s x ? $ / ,
54
+ loader : 'babel-loader' ,
55
+ options : babelEs5Options ,
56
+ } ,
57
+ ] ,
58
+ } ,
59
+ resolve : {
60
+ alias : {
61
+ chalk : path . resolve (
62
+ __dirname ,
63
+ '../packages/expect/build/fakeChalk.js'
64
+ ) ,
65
+ } ,
66
+ } ,
67
+ node : {
68
+ fs : 'empty' ,
48
69
} ,
49
70
} ,
50
- rollupFlow ( ) ,
51
- rollupJson ( ) ,
52
- rollupCommonjs ( ) ,
53
- rollupBabel ( babelEs5Options ) ,
54
- rollupBuiltins ( ) ,
55
- rollupResolve ( ) ,
56
- ] ,
57
- } ) . then ( bundle =>
58
- bundle . write ( {
59
- file : destination ,
60
- format : 'umd' ,
61
- name : pkgName ,
62
- } )
63
- ) ;
71
+ /* eslint-enable */
72
+ ( err , stats ) => {
73
+ if ( err || stats . hasErrors ( ) ) {
74
+ reject ( err || stats . toString ( ) ) ;
75
+ return ;
76
+ }
77
+ resolve ( stats ) ;
78
+ }
79
+ ) ;
80
+ } ) ;
64
81
}
65
82
66
83
module . exports = browserBuild ;
0 commit comments