Files
ic10emu/www/rsbuild.config.ts
2024-08-19 22:22:39 -07:00

78 lines
2.0 KiB
TypeScript

import { defineConfig } from "@rsbuild/core";
import { pluginTypeCheck } from "@rsbuild/plugin-type-check";
import { pluginImageCompress } from "@rsbuild/plugin-image-compress";
import { pluginSass } from "@rsbuild/plugin-sass";
const rspack = require("@rspack/core");
const { CssExtractRspackPlugin } = require("@rspack/core");
const path = require("path");
const commitHash = require("child_process")
.execSync("git rev-parse --short HEAD")
.toString()
.trim();
export default defineConfig({
output: {
targets: ["web"],
},
source: {
entry: {
index: "./src/ts/index.ts",
},
},
tools: {
rspack: {
plugins: [
new rspack.CopyRspackPlugin({
patterns: [
// "src/index.html",
"img/*.png",
"img/*/*.png",
// { from: "data/database.json", to: "data" },
// Copy Shoelace assets to dist/shoelace
{
from: path.resolve(
__dirname,
"node_modules/@shoelace-style/shoelace/dist/assets",
),
to: "shoelace/assets",
},
{
from: path.resolve(
__dirname,
"../CHANGELOG.md"
),
to: "static/",
}
],
}),
new CssExtractRspackPlugin(),
new rspack.DefinePlugin({
__COMMIT_HASH__: JSON.stringify(commitHash),
__BUILD_DATE__: JSON.stringify(new Date()),
}),
],
},
swc: {
jsc: {
parser: {
syntax: "typescript",
// dynamicImport: true,
decorators: true,
},
transform: {
legacyDecorator: true,
decoratorMetadata: true,
// decoratorVersion: "2022-03",
},
// target: "es2021",
},
},
htmlPlugin: {
template: "./src/index.html",
},
},
plugins: [pluginSass(), pluginTypeCheck(), pluginImageCompress()],
});