vuecssuiant-designantdreactantantd-vueenterprisefrontendui-designvue-antdvue-antd-uivue3vuecomponent
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.6 KiB
67 lines
1.6 KiB
const path = require('path'); |
|
const webpack = require('webpack'); |
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); |
|
const HtmlWebpackPlugin = require('html-webpack-plugin'); |
|
const merge = require('webpack-merge'); |
|
const baseWebpackConfig = require('./webpack.base.config'); |
|
|
|
module.exports = merge(baseWebpackConfig, { |
|
output: { |
|
path: path.resolve(__dirname, './_site'), |
|
publicPath: '/', |
|
filename: '[name].[contenthash:8].js', |
|
chunkFilename: '[contenthash:8].async.js', |
|
}, |
|
module: { |
|
rules: [ |
|
{ |
|
test: /\.less$/, |
|
use: [ |
|
MiniCssExtractPlugin.loader, |
|
'css-loader', |
|
'postcss-loader', |
|
{ loader: 'less-loader', options: { javascriptEnabled: true } }, |
|
], |
|
}, |
|
{ |
|
test: /\.css$/, |
|
use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader'], |
|
}, |
|
], |
|
}, |
|
optimization: { |
|
splitChunks: { |
|
cacheGroups: { |
|
vendors: { |
|
name: `chunk-vendors`, |
|
test: /[\\/]node_modules[\\/]/, |
|
priority: -10, |
|
chunks: 'initial', |
|
}, |
|
common: { |
|
name: `chunk-common`, |
|
minChunks: 2, |
|
priority: -20, |
|
chunks: 'initial', |
|
reuseExistingChunk: true, |
|
}, |
|
}, |
|
}, |
|
}, |
|
plugins: [ |
|
new webpack.DefinePlugin({ |
|
'process.env': { |
|
NODE_ENV: '"production"', |
|
}, |
|
}), |
|
new HtmlWebpackPlugin({ |
|
template: './site/index.html', |
|
inject: true, |
|
production: true, |
|
}), |
|
new MiniCssExtractPlugin({ |
|
filename: '[name].[contenthash:8].css', |
|
chunkFilename: '[id].[contenthash:8].css', |
|
}), |
|
], |
|
});
|
|
|