forked from boranton/testcafe-workshop
48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
/* eslint no-console:"off" */
|
|
const {resolve} = require('path')
|
|
const webpack = require('webpack')
|
|
const ProgressBarPlugin = require('progress-bar-webpack-plugin')
|
|
const HtmlWebpackPlugin = require('html-webpack-plugin')
|
|
const InlineManifestWebpackPlugin = require('inline-manifest-webpack-plugin')
|
|
const webpackValidator = require('webpack-validator')
|
|
const {getIfUtils, removeEmpty} = require('webpack-config-utils')
|
|
|
|
module.exports = env => {
|
|
const {ifProd, ifNotProd} = getIfUtils(env)
|
|
const config = webpackValidator({
|
|
context: resolve('src'),
|
|
entry: {
|
|
app: './bootstrap.js',
|
|
vendor: ['todomvc-app-css/index.css'],
|
|
},
|
|
output: {
|
|
filename: ifProd('bundle.[name].[chunkhash].js', 'bundle.[name].js'),
|
|
path: resolve('dist'),
|
|
pathinfo: ifNotProd(),
|
|
},
|
|
devtool: ifProd('source-map', 'eval'),
|
|
module: {
|
|
loaders: [
|
|
{test: /\.js$/, loaders: ['babel'], exclude: /node_modules/},
|
|
{test: /\.css$/, loaders: ['style', 'css']},
|
|
],
|
|
},
|
|
plugins: removeEmpty([
|
|
new ProgressBarPlugin(),
|
|
ifProd(new InlineManifestWebpackPlugin()),
|
|
ifProd(new webpack.optimize.CommonsChunkPlugin({
|
|
names: ['vendor', 'manifest'],
|
|
})),
|
|
new HtmlWebpackPlugin({
|
|
template: './index.html',
|
|
inject: 'head',
|
|
}),
|
|
]),
|
|
})
|
|
if (env.debug) {
|
|
console.log(config)
|
|
debugger // eslint-disable-line
|
|
}
|
|
return config
|
|
}
|