Skip to content
This repository was archived by the owner on Jun 3, 2024. It is now read-only.

Commit d02fc53

Browse files
Add mode logic to webpack config
1 parent 97b78e6 commit d02fc53

File tree

1 file changed

+57
-36
lines changed

1 file changed

+57
-36
lines changed

webpack.config.js

Lines changed: 57 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,40 +3,61 @@ const packagejson = require('./package.json');
33

44
const dashLibraryName = packagejson.name.replace(/-/g, '_');
55

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: /\.js$/,
23-
exclude: /node_modules/,
24-
use: {
25-
loader: 'babel-loader'
26-
}
27-
},
28-
{
29-
test: /\.css$/,
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: /\.js$/,
43+
exclude: /node_modules/,
44+
use: {
45+
loader: 'babel-loader',
3346
},
34-
{
35-
loader: 'css-loader'
36-
}
37-
]
38-
}
39-
]
40-
},
41-
devtool: argv.mode === 'development' ? 'eval-source-map' : 'none'
42-
});
47+
},
48+
{
49+
test: /\.css$/,
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

Comments
 (0)