@@ -3,40 +3,61 @@ const packagejson = require('./package.json');
3
3
4
4
const dashLibraryName = packagejson . name . replace ( / - / g, '_' ) ;
5
5
6
- module . exports = ( env , argv ) => ( {
7
- entry : { main : './src/index.js' } ,
8
- output : {
9
- path : path . resolve ( __dirname , dashLibraryName ) ,
10
- filename : argv . mode === 'development' ? `${ dashLibraryName } .dev.js` : `${ dashLibraryName } .min.js` ,
11
- library : dashLibraryName ,
12
- libraryTarget : 'window'
13
- } ,
14
- externals : {
15
- react : 'React' ,
16
- 'react-dom' : 'ReactDOM' ,
17
- 'plotly.js' : 'Plotly'
18
- } ,
19
- module : {
20
- rules : [
21
- {
22
- test : / \. j s $ / ,
23
- exclude : / n o d e _ m o d u l e s / ,
24
- use : {
25
- loader : 'babel-loader'
26
- }
27
- } ,
28
- {
29
- test : / \. c s s $ / ,
30
- use : [
31
- {
32
- loader : 'style-loader'
6
+ module . exports = ( env , argv ) => {
7
+ let mode ;
8
+
9
+ // if user specified mode flag take that value
10
+ if ( argv && argv . mode ) {
11
+ mode = argv . mode ;
12
+ }
13
+
14
+ // else if configuration object is already set (module.exports) use that value
15
+ else if ( module . exports && module . exports . mode ) {
16
+ mode = module . exports = mode ;
17
+ }
18
+
19
+ // else take webpack default
20
+ else {
21
+ mode = 'production' ;
22
+ }
23
+ return {
24
+ entry : { main : './src/index.js' } ,
25
+ output : {
26
+ path : path . resolve ( __dirname , dashLibraryName ) ,
27
+ filename :
28
+ mode === 'development'
29
+ ? `${ dashLibraryName } .dev.js`
30
+ : `${ dashLibraryName } .min.js` ,
31
+ library : dashLibraryName ,
32
+ libraryTarget : 'window' ,
33
+ } ,
34
+ externals : {
35
+ react : 'React' ,
36
+ 'react-dom' : 'ReactDOM' ,
37
+ 'plotly.js' : 'Plotly' ,
38
+ } ,
39
+ module : {
40
+ rules : [
41
+ {
42
+ test : / \. j s $ / ,
43
+ exclude : / n o d e _ m o d u l e s / ,
44
+ use : {
45
+ loader : 'babel-loader' ,
33
46
} ,
34
- {
35
- loader : 'css-loader'
36
- }
37
- ]
38
- }
39
- ]
40
- } ,
41
- devtool : argv . mode === 'development' ? 'eval-source-map' : 'none'
42
- } ) ;
47
+ } ,
48
+ {
49
+ test : / \. c s s $ / ,
50
+ use : [
51
+ {
52
+ loader : 'style-loader' ,
53
+ } ,
54
+ {
55
+ loader : 'css-loader' ,
56
+ } ,
57
+ ] ,
58
+ } ,
59
+ ] ,
60
+ } ,
61
+ devtool : mode === 'development' ? 'eval-source-map' : 'none' ,
62
+ } ;
63
+ } ;
0 commit comments