1234567891011121314151617181920212223242526272829303132333435363738394041 |
- const path = require('path');
- const { CleanWebpackPlugin } = require('clean-webpack-plugin');
- const TerserPlugin = require('terser-webpack-plugin');
- module.exports = {
- entry: './src/index.js', // 你的源码入口(确保指向正确的 index.js)
- target: ['web', 'es5'],
- mode: 'production',
- output: {
- path: path.resolve(__dirname, 'dist'),
- filename: 'main.js',
- // 关键:设置 UMD 导出,暴露变量名为 UtmTracker
- library: 'UtmTracker', // 全局变量名(浏览器环境)
- libraryTarget: 'umd', // 支持 UMD 格式
- globalObject: 'this', // 兼容浏览器(window)和 Node(global)
- umdNamedDefine: true // 为 AMD 模块命名,避免匿名问题
- },
- plugins: [
- new CleanWebpackPlugin() // 打包前清理 dist 目录
- ],
- optimization: {
- minimizer: [
- new TerserPlugin({
- terserOptions: {
- // 禁止压缩时混淆 UtmTracker 名称
- keep_fnames: /UtmTracker/, // 保留构造函数名
- keep_classnames: true // 若用 class 定义,保留类名
- }
- })
- ]
- },
- module: {
- rules: [
- {
- test: /\.js$/,
- exclude: /node_modules/,
- use: 'babel-loader' // 确保 ES6+ 语法被转译
- }
- ]
- }
- };
|