File size: 1,687 Bytes
99415de | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | const path = require('path');
const webpack = require('webpack');
module.exports = {
mode: 'development', // 或 'production'
entry: './src/index.js', // 入口文件
output: {
path: path.resolve(__dirname, 'dist'), // 输出目录
filename: 'bundle.js',
library: 'KetcherBundle',
libraryTarget: 'umd',
globalObject: 'this',
},
module: {
rules: [
{
test: /\.js$/, // 处理所有 .js 文件
exclude: /node_modules/, // 排除 node_modules 目录
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'], // 使用 env 预设
plugins: ['@babel/plugin-transform-runtime'], // 使用 transform-runtime 插件
},
},
},
{
test: /\.wasm$/, // 处理 .wasm 文件
type: 'javascript/auto', // 需要设置为 'javascript/auto' 以正确加载 WASM 文件
loader: 'file-loader',
options: {
name: '[name].[hash].wasm',
outputPath: 'binaryWasm/', // 输出到 binaryWasm/ 目录
},
},
],
},
resolve: {
fallback: {
path: require.resolve('path-browserify'), // Polyfill for 'path' module
buffer: require.resolve('buffer/'), // Polyfill for 'buffer' module
process: require.resolve('process/browser'), // Polyfill for 'process' module
fs: false, // 不提供 'fs' 模块的 polyfill
},
},
plugins: [
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer'], // 自动提供 Buffer
process: 'process/browser', // 自动提供 process
}),
],
experiments: {
asyncWebAssembly: true, // 启用异步 WASM
},
};
|