| | |
| | | "@": resolve("src"), |
| | | }, |
| | | }, |
| | | module: { |
| | | rules: [ |
| | | // JS 主体文件处理(含 Babel、Thread Loader) |
| | | { |
| | | test: /\.js$/, |
| | | use: [ |
| | | { |
| | | loader: 'thread-loader', |
| | | options: { workers: 4 } |
| | | }, |
| | | 'babel-loader' |
| | | ], |
| | | exclude: /\.worker\.js$/, // 👈 排除 worker 文件 |
| | | include: path.resolve(__dirname, 'src') |
| | | }, |
| | | |
| | | // 单独处理 Worker 文件 |
| | | { |
| | | test: /\.worker\.js$/, |
| | | use: { |
| | | loader: 'worker-loader', |
| | | options: { |
| | | filename: '[name].[contenthash].worker.js', |
| | | inline: 'fallback' |
| | | } |
| | | }, |
| | | type: 'javascript/auto' // 👈 强制 Webpack 不要按模块解析 |
| | | } |
| | | ] |
| | | }, |
| | | plugins: [ |
| | | // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件 |
| | | new CompressionPlugin({ |
| | |
| | | }) |
| | | .end(); |
| | | |
| | | // 修改babel-loader配置,排除worker文件 |
| | | config.module |
| | | .rule('js') |
| | | .exclude |
| | | .add(/\.worker\.js$/) |
| | | .end(); |
| | | |
| | | // 处理worker文件 |
| | | config.module |
| | | .rule('worker') |
| | | .test(/\.worker\.js$/) |
| | | .use('worker-loader') |
| | | .loader('worker-loader') |
| | | .options({ |
| | | filename: '[name].[contenthash].worker.js', |
| | | inline: 'fallback' |
| | | }) |
| | | .end() |
| | | .type('javascript/auto') |
| | | .exclude.add(resolve('node_modules')) |
| | | .end(); |
| | | |
| | | config.when(process.env.NODE_ENV !== "development", (config) => { |
| | | config |
| | | .plugin("ScriptExtHtmlWebpackPlugin") |