mirror of
https://github.com/gosticks/dash-player.git
synced 2025-10-16 11:55:36 +00:00
98 lines
2.6 KiB
JavaScript
98 lines
2.6 KiB
JavaScript
const path = require('path');
|
|
const packagejson = require('./package.json');
|
|
|
|
const dashLibraryName = packagejson.name.replace('@plotly/','').replace(/-/g, '_');
|
|
|
|
const WebpackDashDynamicImport = require('@plotly/webpack-dash-dynamic-import');
|
|
|
|
module.exports = (env, argv) => {
|
|
|
|
let mode;
|
|
|
|
const overrides = module.exports || {};
|
|
|
|
// if user specified mode flag take that value
|
|
if (argv && argv.mode) {
|
|
mode = argv.mode;
|
|
}
|
|
|
|
// else if configuration object is already set (module.exports) use that value
|
|
else if (overrides.mode) {
|
|
mode = overrides.mode;
|
|
}
|
|
|
|
// else take webpack default (production)
|
|
else {
|
|
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 || 'source-map';
|
|
|
|
const externals = ('externals' in overrides) ? overrides.externals : ({
|
|
react: 'React',
|
|
'react-dom': 'ReactDOM',
|
|
'plotly.js': 'Plotly',
|
|
});
|
|
|
|
return {
|
|
mode,
|
|
entry,
|
|
output: {
|
|
path: path.resolve(__dirname, dashLibraryName),
|
|
chunkFilename: '[name].js',
|
|
filename,
|
|
library: dashLibraryName,
|
|
libraryTarget: 'window',
|
|
},
|
|
externals,
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.js$/,
|
|
exclude: /node_modules/,
|
|
use: {
|
|
loader: 'babel-loader',
|
|
},
|
|
},
|
|
{
|
|
test: /\.css$/,
|
|
use: [
|
|
{
|
|
loader: 'style-loader',
|
|
},
|
|
{
|
|
loader: 'css-loader',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
devtool,
|
|
optimization: {
|
|
splitChunks: {
|
|
name: '[name].js',
|
|
cacheGroups: {
|
|
async: {
|
|
chunks: 'async',
|
|
minSize: 0,
|
|
name(module, chunks, cacheGroupKey) {
|
|
return `${cacheGroupKey}-${chunks[0].name}`;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
plugins: [
|
|
new WebpackDashDynamicImport()
|
|
]
|
|
}
|
|
};
|