diff --git a/{{cookiecutter.project_shortname}}/webpack.config.js b/{{cookiecutter.project_shortname}}/webpack.config.js index cfee2ad..9c8c775 100644 --- a/{{cookiecutter.project_shortname}}/webpack.config.js +++ b/{{cookiecutter.project_shortname}}/webpack.config.js @@ -7,6 +7,7 @@ module.exports = (env, argv) => { let mode; + const overrides = module.exports || {}; // if user specified mode flag take that value if (argv && argv.mode) { @@ -14,28 +15,43 @@ module.exports = (env, argv) => { } // else if configuration object is already set (module.exports) use that value - else if (module.exports && module.exports.mode) { - mode = module.exports = mode; + else if (overrides.mode) { + mode = overrides.mode; } - // else take webpack default + // else take webpack default (production) else { - mode = 'production'; // webpack default + mode = 'production'; } + let filename = (overrides.output || {}).filename; + if(!filename) { + const modeSuffix = mode === 'development' ? 'dev' : 'min'; + filename = `${dashLibraryName}.${modeSuffix}.js`; + } + + const entry = overrides.entry || {main: './src/lib/index.js'}; + + const devtool = overrides.devtool || ( + mode === 'development' ? "eval-source-map" : 'none' + ); + + const externals = ('externals' in overrides) ? overrides.externals : ({ + react: 'React', + 'react-dom': 'ReactDOM', + 'plotly.js': 'Plotly', + }); + return { - entry: {main: './src/lib/index.js'}, + mode, + entry, output: { path: path.resolve(__dirname, dashLibraryName), - filename: `${dashLibraryName}.${mode === 'development' ? 'dev' : 'min'}.js`, + filename, library: dashLibraryName, libraryTarget: 'window', }, - externals: { - react: 'React', - 'react-dom': 'ReactDOM', - 'plotly.js': 'Plotly', - }, + externals, module: { rules: [ { @@ -58,6 +74,6 @@ module.exports = (env, argv) => { }, ], }, - devtool: mode === 'development' ? "eval-source-map" : 'none' + devtool } };