2023-12-03 20:00:04 +00:00
|
|
|
const { DuplicatesPlugin } = require("inspectpack/plugin")
|
2023-12-07 09:51:06 +00:00
|
|
|
const { DefinePlugin } = require("webpack")
|
2023-12-03 20:00:04 +00:00
|
|
|
const { join } = require("path")
|
2023-12-07 09:51:06 +00:00
|
|
|
const StatoscopeWebpackPlugin = require('@statoscope/webpack-plugin').default
|
2023-12-03 20:00:04 +00:00
|
|
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin")
|
|
|
|
const HtmlWebpackPlugin = require("html-webpack-plugin")
|
2023-12-05 06:12:59 +00:00
|
|
|
|
2023-12-07 09:51:06 +00:00
|
|
|
const demo = !!process.env.demo
|
2023-12-06 13:38:39 +00:00
|
|
|
const withReport = !!process.env.withReport
|
|
|
|
const analyzeDeps = !!process.env.analyzeDeps
|
2023-12-03 20:00:04 +00:00
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
entry: join(__dirname, "client/src/index"),
|
|
|
|
output: {
|
|
|
|
path: join(__dirname, "static"),
|
|
|
|
clean: true
|
|
|
|
},
|
|
|
|
plugins: [
|
|
|
|
new MiniCssExtractPlugin(),
|
|
|
|
new HtmlWebpackPlugin({
|
2023-12-06 17:40:25 +00:00
|
|
|
baseUrl: "/cosmos-ui/",
|
2023-12-03 20:00:04 +00:00
|
|
|
template: "client/index.html",
|
|
|
|
inject: true,
|
|
|
|
minify: true
|
2023-12-07 09:51:06 +00:00
|
|
|
}),
|
|
|
|
new DefinePlugin({
|
|
|
|
"process.env.MODE": JSON.stringify(demo ? "demo" : "production")
|
2023-12-03 20:00:04 +00:00
|
|
|
})
|
2023-12-07 09:51:06 +00:00
|
|
|
].concat(withReport ? [new StatoscopeWebpackPlugin()] : [])
|
2023-12-03 20:00:04 +00:00
|
|
|
.concat(analyzeDeps ? [new DuplicatesPlugin({ emitErrors: true, verbose: true })] : []),
|
|
|
|
module: {
|
|
|
|
rules: [
|
|
|
|
{
|
|
|
|
test: /\.(ts|js|mjs|cjs)x?$/i,
|
2023-12-07 09:51:06 +00:00
|
|
|
use: ["babel-loader"],
|
2023-12-03 20:00:04 +00:00
|
|
|
exclude: /node_modules/,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
test: /\.s[ac]ss$/i,
|
|
|
|
use: [
|
|
|
|
"sass-loader",
|
|
|
|
MiniCssExtractPlugin.loader,
|
|
|
|
{
|
|
|
|
loader: "css-loader",
|
|
|
|
options: {
|
|
|
|
importLoaders: 1,
|
|
|
|
modules: true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
test: /\.css$/i,
|
|
|
|
use: [
|
|
|
|
MiniCssExtractPlugin.loader,
|
|
|
|
{
|
|
|
|
loader: "css-loader",
|
|
|
|
options: {
|
|
|
|
importLoaders: 1,
|
|
|
|
modules: true
|
|
|
|
}
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
test: /\.(jpe?g|png|gif|svg)$/i,
|
2023-12-06 17:40:25 +00:00
|
|
|
type: "asset/resource",
|
2023-12-03 20:00:04 +00:00
|
|
|
}
|
|
|
|
],
|
|
|
|
},
|
|
|
|
resolve: {
|
|
|
|
extensions: [".*", ".tsx", ".ts", ".mts", ".jsx", ".js", ".mjs"],
|
|
|
|
fallback: {
|
|
|
|
"stream": require.resolve("stream-browserify"),
|
|
|
|
"crypto": require.resolve("crypto-browserify"),
|
|
|
|
"path": require.resolve("path-browserify"),
|
|
|
|
"buffer": require.resolve("buffer/"),
|
|
|
|
"util": require.resolve("util/"),
|
|
|
|
"fs": false
|
|
|
|
},
|
|
|
|
alias: {
|
|
|
|
"bn.js": require.resolve("bn.js"),
|
|
|
|
"isarray": require.resolve("isarray"),
|
|
|
|
"level-fix-range": require.resolve("level-fix-range"),
|
|
|
|
"object-keys": require.resolve("object-keys"),
|
|
|
|
"prr": require.resolve("prr"),
|
|
|
|
"react-is": require.resolve("react-is"),
|
|
|
|
"safe-buffer": require.resolve("safe-buffer"),
|
|
|
|
"string_decoder": require.resolve("string_decoder"),
|
|
|
|
"xtend": require.resolve("xtend"),
|
|
|
|
"framer-motion": require.resolve("framer-motion")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|