const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");//将CSS代码提取为独立文件的插件
const OptimizeCssAssetsPlugin = require("optimize-css-assets-webpack-plugin");//CSS模块资源优化插件
const path = require('path');
module.exports = {
entry: './src/index.tsx',
mode: 'development',
resolve: {
extensions: ['.ts', '.tsx', '.js', '.json']
},
output: {
path: path.join(__dirname, '/dist'),
filename: 'bundle.min.js'
},
module: {
rules: [
{
test: /\.tsx?$/,
use: [
'ts-loader'
]
},
{
test: /\.scss?$/,
use: [
// 'style-loader',
{
loader: MiniCssExtractPlugin.loader//建议生产环境采用此方式解耦CSS文件与js文件
},
{
loader: 'css-loader',
options: { importLoaders: 2 }
},
"postcss-loader",
'sass-loader',
{
loader: 'sass-resources-loader',
options: { resources: './src/styles/resources.scss' }
}
]
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: "./src/index.html"
}),
new MiniCssExtractPlugin({
filename: "[name].css"
}) //为抽取出的独立的CSS文件设置配置参数
],
optimization: {
//对生成的CSS文件进行代码压缩 mode='production'时生效
minimizer: [
new OptimizeCssAssetsPlugin()
]
}
};