blob: bd5ea2ab0d6fda2d4243673e0d36b7150f8fb7c4 [file] [log] [blame]
var webpack = require('webpack');
var path = require('path');
var PATHS = {
SRC: path.resolve(__dirname, 'src/main/webapp'),
TARGET: path.resolve(__dirname, 'dist')
};
module.exports = (env, argv) => {
let devmode = argv.mode && argv.mode === 'development';
let entry = [];
if (devmode) {
entry.push(path.resolve(PATHS.SRC, 'lib/main.jsx'));
} else {
entry.push(
path.resolve(PATHS.SRC, 'lib/ecomp/asdc/sequencer/Sequencer.jsx')
);
}
let config = {
entry: entry,
performance: { hints: false },
output: {
path: PATHS.TARGET,
filename: 'index.js',
libraryTarget: 'umd'
},
resolve: {
extensions: ['.js', '.jsx']
},
devtool: 'eval-source-map',
module: {
rules: [
{
test: /\.(js|jsx)$/,
loader: 'eslint-loader',
include: [/src/],
enforce: 'pre'
},
{
test: /\.(js|jsx)$/,
loader: 'babel-loader',
include: path.join(PATHS.SRC, 'lib')
},
{
test: /\.(css)$/,
use: [{ loader: 'style-loader' }, { loader: 'css-loader' }]
},
{
test: /\.(png|woff|woff2|eot|ttf|otf)$/,
loader: 'url-loader?limit=100000'
},
{
test: /\.scss$/,
include: path.join(PATHS.SRC, 'res'),
loaders: ['style-loader', 'css-loader', 'sass-loader']
},
{
test: /\.html$/,
include: path.join(PATHS.SRC, 'lib'),
loaders: ['raw-loader']
},
{
test: /\.svg$/,
loader: 'svg-sprite-loader',
options: {
symbolId: '[name]_[hash]',
extract: false
}
}
]
},
externals: devmode
? {}
: {
'd3-zoom': 'd3-zoom',
'd3-selection': 'd3-selection',
'lodash/merge': 'lodash/merge',
'lodash/template': 'lodash/template',
react: 'react',
'react-dnd': 'react-dnd',
'react-dnd-html5-backend': 'react-dnd-html5-backend',
'react-dom': 'react-dom',
'react-redux': 'react-redux',
'react-select': 'react-select',
redux: 'redux',
'prop-types': 'prop-types'
},
devServer: {
port: 4096,
quiet: false,
contentBase: 'src/main/webapp',
proxy: {
'/services/*': {
target: 'http://localhost:38080/asdc-sequencer',
secure: false
}
}
},
plugins: devmode
? [
new webpack.DefinePlugin({
DEBUG: devmode === true,
DEV: devmode === true
}),
new webpack.HotModuleReplacementPlugin(),
new webpack.LoaderOptionsPlugin({
options: {
eslint: {
failOnWarning: false,
failOnError: false,
configFile: 'eslintrc.json'
},
context: '/'
}
})
]
: [
new webpack.DefinePlugin({
DEBUG: devmode === true,
DEV: devmode === true
}),
new webpack.LoaderOptionsPlugin({
options: {
eslint: {
failOnWarning: false,
failOnError: false,
configFile: 'eslintrc.json'
},
context: '/'
}
})
]
};
return config;
};