120 lines
3.0 KiB
JavaScript
Executable File
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);
|
|
});
|