const path = require("path"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const { CleanWebpackPlugin } = require("clean-webpack-plugin"); const CopyWebpackPlugin = require("copy-webpack-plugin"); const webpack = require("webpack"); const WasmPackPlugin = require("@wasm-tool/wasm-pack-plugin"); module.exports = { entry: { app: "./index.js", "editor.worker": 'monaco-editor/esm/vs/editor/editor.worker.js', "json.worker": 'monaco-editor/esm/vs/language/json/json.worker', "css.worker": 'monaco-editor/esm/vs/language/css/css.worker', "html.worker": 'monaco-editor/esm/vs/language/html/html.worker', "ts.worker": 'monaco-editor/esm/vs/language/typescript/ts.worker', }, output: { path: path.resolve(__dirname, "dist"), filename: "[name].js", }, plugins: [ new CleanWebpackPlugin(), new HtmlWebpackPlugin({ template: "index.html", }), new WasmPackPlugin({ crateDirectory: path.resolve(__dirname, "./boa_wasm/"), outDir: path.resolve(__dirname, "./boa_wasm/pkg/"), }), new CopyWebpackPlugin([ { from: "./assets/*", to: ".", }, { from: "./node_modules/bootstrap/dist/css/bootstrap.min.css", to: "./assets", }, ]), // Have this example work in Edge which doesn't ship `TextEncoder` or // `TextDecoder` at this time. new webpack.ProvidePlugin({ TextDecoder: ["text-encoding", "TextDecoder"], TextEncoder: ["text-encoding", "TextEncoder"], }), ], module: { rules: [ { test: /\.css$/, use: ["style-loader", "css-loader"], }, { test: /\.ttf$/, use: ["file-loader"], }, ], }, mode: "development", };