-
Notifications
You must be signed in to change notification settings - Fork 65
Expand file tree
/
Copy pathrspack.config.ts
More file actions
99 lines (92 loc) · 2.09 KB
/
rspack.config.ts
File metadata and controls
99 lines (92 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import { defineConfig } from "@rspack/cli";
import { rspack } from "@rspack/core";
import { RsdoctorRspackPlugin } from "@rsdoctor/rspack-plugin";
import { readFile } from "node:fs/promises";
import { execSync } from "node:child_process";
import { join, resolve } from "path";
import { fileURLToPath } from "url";
import { readFileSync } from "node:fs";
import { writeFileSync, chmodSync } from "node:fs";
import scramjetConfig, { tsloader } from "./packages/scramjet/rspack.config.ts";
if (!process.env.CI) {
try {
writeFileSync(
".git/hooks/pre-commit",
"pnpm format\ngit update-index --again"
);
chmodSync(".git/hooks/pre-commit", 0o755);
} catch {}
}
const __dirname = fileURLToPath(new URL(".", import.meta.url));
// Project directories
const cdpdir = join(__dirname, "packages/cdp");
const injectdir = join(__dirname, "packages/inject");
// Configuration for CDP (Chobitsu)
// Define external dependencies from package.json
const cssloader = {
test: /\.css$/,
type: "asset/source",
};
const cdpConfig = defineConfig({
name: "cdp",
entry: join(cdpdir, "src/index.ts"),
devtool: "source-map",
target: "web",
output: {
filename: "chobitsu.js",
path: join(cdpdir, "dist"),
library: {
type: "module",
},
},
resolve: {
extensions: [".ts", ".js"],
},
module: {
rules: [tsloader, cssloader],
},
experiments: {
outputModule: true,
},
externals: {
axios: "axios",
"core-js": "core-js",
"devtools-protocol": "devtools-protocol",
html2canvas: "html2canvas",
licia: "licia",
},
});
const injectConfig = defineConfig({
name: "inject",
dependencies: process.env.SKIP_CORE ? [] : ["scramjet-iife"],
entry: join(injectdir, "src/index.ts"),
devtool: "source-map",
target: "web",
mode: "development",
output: {
filename: "inject.js",
path: join(injectdir, "dist"),
iife: true,
},
resolve: {
extensions: [".ts", ".js"],
},
module: {
rules: [
tsloader,
cssloader,
{
test: /\.html$/,
type: "asset/source",
},
],
},
performance: {
hints: false,
},
});
export default [
...(process.env.SKIP_CORE ? [] : scramjetConfig),
cdpConfig,
injectConfig,
];