var webpack = require('webpack'); var path = require('path'); var PATHS = { SRC: path.resolve(__dirname, 'src/main/webapp'), TARGET: path.resolve(__dirname, 'dist') }; var devmode = (process.env.npm_lifecycle_event === 'start'); var entry = []; if (devmode) { entry.push('babel-polyfill'); entry.push(path.resolve(PATHS.SRC, 'lib/main.jsx')); } else { entry.push(path.resolve(PATHS.SRC, 'lib/ecomp/asdc/sequencer/Sequencer.jsx')); } var config = { entry: entry, output: { path: PATHS.TARGET, filename: 'index.js', libraryTarget: 'umd' }, resolve: { extensions: ['', '.js', '.jsx'] }, eslint: { failOnWarning: false, failOnError: false, configFile: 'eslintrc.json' }, devtool: 'eval-source-map', module: { preLoaders: [{ test: /\.(js|jsx)?$/, loader: 'eslint-loader', exclude: /node_modules/ }], loaders: [{ test: /\.(js|jsx)$/, include: path.join(PATHS.SRC, 'lib'), loader: 'babel-loader', exclude: /node_modules/, query: { presets: ['es2015', 'react'] } }, { test: /\.css$/, loaders: ['style', 'css'] }, { test: /\.(png|woff|woff2|eot|ttf|otf)$/, loader: 'url-loader?limit=100000' }, { test: /\.scss$/, include: path.join(PATHS.SRC, 'res'), loaders: ['style', 'css', 'sass'] }, { test: /\.html$/, include: path.join(PATHS.SRC, 'lib'), loaders: ['raw'] }, { test: /\.json$/, include: path.join(PATHS.SRC, 'lib'), loaders: ['json'] }, { test: /\.svg$/, loader: 'svg-sprite?' + JSON.stringify({ name: '[name]_[hash]', prefixize: true }) }] }, externals: (devmode ? {} : { 'd3': 'd3', 'lodash': 'lodash', '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' }), devServer: { port: 4096, quiet: false, contentBase: 'src/main/webapp', proxy: { '/services/*': { target: 'http://localhost:38080/asdc-sequencer', secure: false } } } }; module.exports = config;