wimi/etc/webpack.common.js

54 lines
1.4 KiB
JavaScript

const path = require("path");
const process = require("process");
const webpack = require("webpack");
const CopyPlugin = require("copy-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
module.exports = {
entry: {
index: "./src/js/index.tsx",
},
output: {
filename: "js/[name].js",
path: path.resolve(__dirname, "..", "build")
},
resolve: {
alias: {
"~": [path.resolve(__dirname, "..", "src", "js")],
"react": "preact/compat",
"react-dom": "preact/compat",
"react/jsx-runtime": "preact/jsx-runtime",
},
modules: [path.resolve(__dirname, "..", "node_modules")],
extensions: [".js", ".ts", ".tsx"]
},
module: {
rules: [
{
test: /\.tsx?$/,
loader: "esbuild-loader",
exclude: /node_modules/,
options: {
loader: "tsx",
target: "ES2020"
}
},
],
},
plugins: [
new CopyPlugin({
patterns: [
{ from: "src/html/", to: "html" },
{ from: "src/css/", to: "css" },
{ from: "src/manifest.json", to: "manifest.json" },
{ from: "src/images", to: "images/" },
{ from: "src/_locales", to: "_locales/" },
{ from: "src/fonts", to: "fonts/" }
],
}),
new CleanWebpackPlugin(),
new webpack.ProvidePlugin({
React: ["preact/compat"]
}),
],
}