自定义Webpack配置

Light 工程在编译时使用一套默认的 Webpack 配置,用户也可以通过 build.js 文件自定义 Webpack 配置。

只需将 build.js 文件放在项目根目录下,书写好自定义配置后,无需其他操作,在编译时会自动加载配置。

以下是一个自定义配置文件实例(恒生内网),外网用户请下载示例合集

const path = require('path')
const fs = require('fs')
const isRegExp = str => (Object.prototype.toString.call(str) === '[object RegExp]');
const RemoveStrictPlugin = require('remove-strict-webpack-plugin');

module.exports = {
//构建方法,返回一个合并后的配置项
build(config, merge, webpack) {
//构建方法,返回一个合并后的配置项
const localConfig = {
//自定义配置项
resolve: {
alias: {
'projectname': path.resolve(__dirname, '')
}
},
plugins: [
new webpack.DefinePlugin({
'process.env': fs.existsSync(path.resolve(__dirname, `./config/config_${process.env.NODE_ENV}.js`))
? require(`./config/config_${process.env.NODE_ENV}`)
: require('./config/config_prod')
}),
new RemoveStrictPlugin()
]
};
//babel配置
const rules = config.module.rules;
const babelLoader = rules.find(a => isRegExp(a.test) && a.test.test('.js'));

if (babelLoader) {
babelLoader.options.plugins = [
require(path.resolve(__dirname, 'lib/node_modules/babel-plugin-transform-decorators-legacy')).default,
require(path.resolve(__dirname, 'lib/node_modules/babel-plugin-transform-runtime')),
...babelLoader.options.plugins,
];

babelLoader.exclude = /(node_modules|bower_components)/;
}
return merge(config, localConfig);
}
}