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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
#!/usr/bin/env node
/*
This file is part of GNU Taler
(C) 2022 Taler Systems S.A.
GNU Taler is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation; either version 3, or (at your option) any later version.
GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
import {
build,
computeConfig,
getFilesInDirectory,
} from "@gnu-taler/web-util/build";
import linaria from "@linaria/esbuild";
import esbuild from "esbuild";
import path from "path";
import fs from "fs";
const BASE = process.cwd();
const allStaticFiles = getFilesInDirectory("static");
// await build({
// source: {
// js: [
// "src/popupEntryPoint.tsx",
// "src/walletEntryPoint.tsx",
// "src/background.ts",
// "src/taler-wallet-interaction-loader.ts",
// "src/taler-wallet-interaction-support.ts",
// "src/browserWorkerEntry.ts",
// ],
// assets: allStaticFiles,
// },
// destination: "./dist/prod",
// css: "linaria",
// });
function copyFilesPlugin(files) {
return {
name: "copy-files",
setup(build) {
const outDir = build.initialOptions.outdir;
if (outDir === undefined)
throw Error("esbuild build options does not specify outdir");
build.onEnd(() => {
for (const file of files) {
const name = path.parse(file).base;
fs.copyFileSync(file, path.join(outDir, name));
}
});
},
};
}
const buildConfig2 = computeConfig({
source: {
js: [
"src/popupEntryPoint.tsx",
"src/walletEntryPoint.tsx",
"src/background.ts",
"src/taler-wallet-interaction-loader.ts",
"src/taler-wallet-interaction-support.ts",
"src/browserWorkerEntry.ts",
],
assets: allStaticFiles,
},
destination: "./dist/prod",
css: "linaria",
});
const preact = path.join(
BASE,
"node_modules",
"preact",
"compat",
"dist",
"compat.module.js",
);
const preactCompatPlugin = {
name: "preact-compat",
setup(build) {
build.onResolve({ filter: /^(react-dom|react)$/ }, (args) => ({
path: preact,
}));
},
};
const asd = linaria.default({
babelOptions: {
babelrc: false,
configFile: "./babel.config-linaria.json",
},
sourceMap: true,
});
// buildConfig2.plugins = [
// preactCompatPlugin,
// copyFilesPlugin(allStaticFiles),
// asd,
// ];
// console.log(JSON.stringify(buildConfig, undefined, 2));
// console.log(JSON.stringify(buildConfig2, undefined, 2));
await esbuild.build(buildConfig2).catch((e) => {
// eslint-disable-next-line no-undef
console.log(e);
// eslint-disable-next-line no-undef
process.exit(1);
});
|