// Copyright (c) Meta Platforms, Inc. and affiliates. // All rights reserved. // This source code is licensed under the license found in the // LICENSE file in the root directory of this source tree. const { resolve } = require("path"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const FriendlyErrorsWebpackPlugin = require("friendly-errors-webpack-plugin"); const CopyPlugin = require("copy-webpack-plugin"); const webpack = require("webpack"); module.exports = { entry: "./src/index.tsx", resolve: { extensions: [".js", ".jsx", ".ts", ".tsx"], }, output: { path: resolve(__dirname, "dist"), }, module: { rules: [ { test: /\.mjs$/, include: /node_modules/, type: "javascript/auto", resolve: { fullySpecified: false, }, }, { test: [/\.jsx?$/, /\.tsx?$/], use: ["ts-loader"], exclude: /node_modules/, }, { test: /\.css$/, use: ["style-loader", "css-loader"], }, { test: /\.(scss|sass)$/, use: ["style-loader", "css-loader", "postcss-loader"], }, { test: /\.(jpe?g|png|gif|svg)$/i, use: [ "file-loader?hash=sha512&digest=hex&name=img/[contenthash].[ext]", "image-webpack-loader?bypassOnDebug&optipng.optimizationLevel=7&gifsicle.interlaced=false", ], }, { test: /\.(woff|woff2|ttf)$/, use: { loader: "url-loader", }, }, ], }, plugins: [ new CopyPlugin({ patterns: [ { from: "node_modules/onnxruntime-web/dist/*.wasm", to: "[name][ext]", }, { from: "model", to: "model", }, { from: "src/assets", to: "assets", }, ], }), new HtmlWebpackPlugin({ template: "./src/assets/index.html", }), new FriendlyErrorsWebpackPlugin(), new webpack.ProvidePlugin({ process: "process/browser", }), ], };