77'use strict' ;
88
99const 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' ) ;
1713
1814const babelEs5Options = {
1915 // Dont load other config files
@@ -24,43 +20,64 @@ const babelEs5Options = {
2420 [
2521 '@babel/preset-env' ,
2622 {
27- // Required for Rollup
28- modules : false ,
23+ // Required for Webpack
24+ modules : 'cjs' ,
2925 shippedProposals : true ,
3026 // Target ES5
3127 targets : 'IE 11' ,
3228 } ,
3329 ] ,
3430 '@babel/preset-flow' ,
3531 ] ,
36- runtimeHelpers : true ,
3732} ;
3833
3934function 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 */
4340 {
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' ,
4869 } ,
4970 } ,
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+ } ) ;
6481}
6582
6683module . exports = browserBuild ;
0 commit comments