@@ -5,38 +5,85 @@ import { terser } from 'rollup-plugin-terser'
55
66import pkg from './package.json'
77
8+ const extensions = [ '.js' ]
9+
10+ const babelRuntimeVersion = pkg . dependencies [ '@babel/runtime' ] . replace (
11+ / ^ [ ^ 0 - 9 ] * / ,
12+ ''
13+ )
14+
15+ const makeExternalPredicate = externalArr => {
16+ if ( externalArr . length === 0 ) {
17+ return ( ) => false
18+ }
19+ const pattern = new RegExp ( `^(${ externalArr . join ( '|' ) } )($|/)` )
20+ return id => pattern . test ( id )
21+ }
22+
823export default [
924 // CommonJS
1025 {
1126 input : 'src/index.js' ,
1227 output : { file : 'lib/redux.js' , format : 'cjs' , indent : false } ,
13- external : [
28+ external : makeExternalPredicate ( [
1429 ...Object . keys ( pkg . dependencies || { } ) ,
1530 ...Object . keys ( pkg . peerDependencies || { } )
16- ] ,
17- plugins : [ babel ( ) ]
31+ ] ) ,
32+ plugins : [
33+ nodeResolve ( {
34+ extensions
35+ } ) ,
36+ babel ( {
37+ extensions,
38+ plugins : [
39+ [ '@babel/plugin-transform-runtime' , { version : babelRuntimeVersion } ] ,
40+ ] ,
41+ babelHelpers : 'runtime'
42+ } )
43+ ]
1844 } ,
1945
2046 // ES
2147 {
2248 input : 'src/index.js' ,
2349 output : { file : 'es/redux.js' , format : 'es' , indent : false } ,
24- external : [
50+ external : makeExternalPredicate ( [
2551 ...Object . keys ( pkg . dependencies || { } ) ,
2652 ...Object . keys ( pkg . peerDependencies || { } )
27- ] ,
28- plugins : [ babel ( ) ]
53+ ] ) ,
54+ plugins : [
55+ nodeResolve ( {
56+ extensions
57+ } ) ,
58+ babel ( {
59+ extensions,
60+ plugins : [
61+ [
62+ '@babel/plugin-transform-runtime' ,
63+ { version : babelRuntimeVersion , useESModules : true }
64+ ] ,
65+ ] ,
66+ babelHelpers : 'runtime'
67+ } )
68+ ]
2969 } ,
3070
3171 // ES for Browsers
3272 {
3373 input : 'src/index.js' ,
3474 output : { file : 'es/redux.mjs' , format : 'es' , indent : false } ,
3575 plugins : [
36- nodeResolve ( ) ,
76+ nodeResolve ( {
77+ extensions
78+ } ) ,
3779 replace ( {
3880 'process.env.NODE_ENV' : JSON . stringify ( 'production' )
3981 } ) ,
82+ babel ( {
83+ extensions,
84+ exclude : 'node_modules/**' ,
85+ skipPreflightCheck : true
86+ } ) ,
4087 terser ( {
4188 compress : {
4289 pure_getters : true ,
@@ -58,9 +105,12 @@ export default [
58105 indent : false
59106 } ,
60107 plugins : [
61- nodeResolve ( ) ,
108+ nodeResolve ( {
109+ extensions
110+ } ) ,
62111 babel ( {
63- exclude : 'node_modules/**'
112+ extensions,
113+ exclude : 'node_modules/**' ,
64114 } ) ,
65115 replace ( {
66116 'process.env.NODE_ENV' : JSON . stringify ( 'development' )
@@ -78,9 +128,13 @@ export default [
78128 indent : false
79129 } ,
80130 plugins : [
81- nodeResolve ( ) ,
131+ nodeResolve ( {
132+ extensions
133+ } ) ,
82134 babel ( {
83- exclude : 'node_modules/**'
135+ extensions,
136+ exclude : 'node_modules/**' ,
137+ skipPreflightCheck : true
84138 } ) ,
85139 replace ( {
86140 'process.env.NODE_ENV' : JSON . stringify ( 'production' )
0 commit comments