kdayun-compnent-develop/kdayun-compnent-pack/webpack.config.production.js

93 lines
2.6 KiB
JavaScript
Raw Normal View History

2022-02-19 20:37:32 +08:00
const path = require('path');
const TerserPlugin = require('terser-webpack-plugin')
const htmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
mode: 'production',
name: 'yhdesigner-userDefineModule',
entry: {
"designer": './src/index.ts',
"preview": './src/preview.ts'
},
output: {
filename: '[name].js',
path: path.resolve(__dirname, './dist')
},
module: {
unknownContextCritical: false,
rules: [
{
test: /\.tsx?$/,
use: ['ts-loader'],
exclude: /node_modules/
}, {
test: /\.css$/,
use: ['style-loader', 'css-loader']
},
{
test: /\.less$/,
use: ['style-loader', 'css-loader', 'less-loader']
},
{
test: /\.(gif|png|jpeg|eot|woff|ttf|svg|pdf)$/,
use: ['file-loader']
}
]
},
resolve: {
extensions: ['.tsx', '.ts', ".js"],
alias: {
'vue$': 'vue/dist/vue.esm.js'
}
},
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
ecma: 5,
parse: {},
warnings: false,
keep_classnames: true,
keep_fnames: true,
compress: {
drop_console: true,
drop_debugger: true,
pure_funcs: ['console.log'] // 移除console
},
},
extractComments: false
}),
]
},
performance: {
hints: 'warning',
//入口起点的最大体积 整数类型(以字节为单位)
maxEntrypointSize: 50000000,
//生成文件的最大体积 整数类型(以字节为单位 300k
maxAssetSize: 30000000,
//只给出 js 文件的性能提示
assetFilter: function (assetFilename) {
return assetFilename.endsWith('.css') || assetFilename.endsWith('.js');
}
},
plugins: [
new htmlWebpackPlugin({
template: './src/index.html',
filename: 'index.html',
inject: 'body',
chunks: ['designer']
}),
new htmlWebpackPlugin({
template: './src/preview.html',
filename: 'preview.html',
inject: 'body',
chunks: ['preview']
}),
],
externals: {
jquery: "$",
lodash: "_",
echarts: "echarts",
}
}