real-name-pc
Version:
108 lines (106 loc) • 2.71 kB
JavaScript
const path = require('path');
const TerserPlugin = require('terser-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
module.exports = {
entry: {
'real-name-pc': ['@babel/polyfill', './src/index.js'],
'real-name-pc.min': ['@babel/polyfill', './src/index.js']
},
output: {
path: path.join(__dirname, 'dist'),
filename: '[name].js',
chunkFilename: '[name].js',
library: 'RealNamePc',
libraryTarget: 'umd',
libraryExport: 'default'
},
mode: 'production',
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
include: /(\.min|vendors)\.js$/
})
],
// splitChunks: {
// cacheGroups: {
// vendor: {
// test: /(react|react-dom|redux)/,
// name: 'vendors',
// chunks: 'all'
// }
// }
// }
},
module: {
rules: [
{
test: /.js$/,
include: path.resolve(__dirname, 'src'),
use: 'babel-loader'
},
{
test: /\.(css|less)$/,
include: path.resolve(__dirname, 'src'),
use: [
'style-loader',
'css-loader',
'less-loader',
'postcss-loader'
]
},
{
test: /.(png|jpg|gif|jpeg|svg)$/,
use: [
{
loader: 'file-loader',
options: {
name: '[name]_[hash:8].[ext]'
}
},
{
loader: 'image-webpack-loader',
options: {
mozjpeg: {
progressive: true,
quality: 65
},
// optipng.enabled: false will disable optipng
optipng: {
enabled: false,
},
pngquant: {
quality: [0.65, 0.90],
speed: 4
},
gifsicle: {
interlaced: false,
},
// the webp option will enable WEBP
webp: {
quality: 75
}
}
},
]
}
]
},
plugins: [
new CleanWebpackPlugin()
],
resolve: {
extensions: ['.js'],
alias: {
src: path.resolve(__dirname, './src'),
utils: path.resolve(__dirname, './src/utils'),
sdk: path.resolve(__dirname, './src/sdk'),
components: path.resolve(__dirname, './src/components'),
request: path.resolve(__dirname, './src/request'),
},
mainFields: ['main'],
// 在模块中添加 src, 当导入文件时,可以将 src 作为相关路径
modules: ['src', 'node_modules']
},
}