igroot-builder
Version:
白山——zeus系统前端打包工具
55 lines (49 loc) • 1.64 kB
JavaScript
const path = require('path')
const webpack = require('webpack')
const merge = require('webpack-merge')
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const baseConfig = require('./webpack.base')
const { entryDirs } = require('../utils')
const { options: { define, include, extend } } = require('../bsy')
const extendConfig = extend ? require(path.resolve(extend)) : undefined
module.exports = merge(baseConfig, {
mode: 'development',
devtool: 'eval-cheap-module-source-map',
entry: entryDirs
.filter(dir => !include || include.includes(dir))
.reduce((result, dir) => {
result[dir] = [
require.resolve('react-dev-utils/webpackHotDevClient'),
path.join(__dirname, '../runtime.js'),
path.resolve(`src/pages/${dir}/index.jsx`)
]
return result
}, {}),
output: {
filename: '[name].js',
path: path.resolve('dist'),
pathinfo: false
},
plugins: [
new webpack.DefinePlugin({
'process.env': '"development"',
APP_CONFIG: JSON.stringify(define)
}),
new FriendlyErrorsPlugin(),
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
new webpack.HotModuleReplacementPlugin(),
new webpack.ProvidePlugin({
process: 'process/browser',
}),
...entryDirs.map(dir => {
// https://github.com/ampedandwired/html-webpack-plugin
return new HtmlWebpackPlugin({
filename: `${dir}.html`,
vendors: '',
template: path.resolve(`src/pages/${dir}/index.html`),
chunks: [dir],
})
})
]
}, extendConfig)