From f45ef767016a425d04cce7755b27aceff292603c Mon Sep 17 00:00:00 2001 From: Sebastian Date: Thu, 24 Mar 2022 16:02:38 -0300 Subject: esbuild configuration --- .../build-fast-with-linaria.mjs | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 packages/taler-wallet-webextension/build-fast-with-linaria.mjs (limited to 'packages/taler-wallet-webextension/build-fast-with-linaria.mjs') diff --git a/packages/taler-wallet-webextension/build-fast-with-linaria.mjs b/packages/taler-wallet-webextension/build-fast-with-linaria.mjs new file mode 100644 index 000000000..890217ae2 --- /dev/null +++ b/packages/taler-wallet-webextension/build-fast-with-linaria.mjs @@ -0,0 +1,77 @@ + +import linaria from '@linaria/esbuild' +import esbuild from 'esbuild' +import path from "path" +import fs from "fs" + +function getFilesInDirectory(startPath, regex) { + if (!fs.existsSync(startPath)) { + return; + } + const files = fs.readdirSync(startPath); + const result = files.flatMap(file => { + const filename = path.join(startPath, file); + + const stat = fs.lstatSync(filename); + if (stat.isDirectory()) { + return getFilesInDirectory(filename, regex); + } + else if (regex.test(filename)) { + return filename + } + }).filter(x => !!x) + + return result +} + +const allTestFiles = getFilesInDirectory(path.join(process.cwd(), 'src'), /.test.ts$/) + +const preact = path.join(process.cwd(), "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 entryPoints = [ + 'src/popupEntryPoint.tsx', 'src/walletEntryPoint.tsx', 'src/background.ts', 'src/browserWorkerEntry.ts' +] + +await esbuild + .build({ + entryPoints: [...entryPoints, ...allTestFiles], + bundle: true, + outdir: 'dist', + minify: false, + loader: { + '.svg': 'text', + '.png': 'file', + }, + target: [ + 'es6' + ], + format: 'iife', + platform: 'browser', + sourcemap: 'external', + jsxFactory: 'h', + jsxFragment: 'Fragment', + // define: { + // 'process.env.NODE_ENV': '"development"', + // }, + plugins: [ + preactCompatPlugin, + linaria.default({ + babelOptions: { + babelrc: false, + configFile: './babel.config-linaria.json', + }, + sourceMap: true, + }), + ], + }) + .catch((e) => { + console.log(e) + process.exit(1) + }); + -- cgit v1.2.3