wallet-core/packages/taler-wallet-webextension/build.mjs
2023-05-05 08:52:58 -03:00

120 lines
3.0 KiB
JavaScript
Executable File

#!/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);
});