diff options
author | Sebastian <sebasjm@gmail.com> | 2022-03-24 16:02:38 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2022-03-24 16:02:38 -0300 |
commit | f45ef767016a425d04cce7755b27aceff292603c (patch) | |
tree | 8e6e2aa47bf282d3db08f54264f2c9db2179ba90 /packages/taler-wallet-webextension/build-fast-with-linaria.mjs | |
parent | 2c6b83ffea8d7b898d7ccb52b2b026c2e4ba6f24 (diff) | |
download | wallet-core-f45ef767016a425d04cce7755b27aceff292603c.tar.xz |
esbuild configuration
Diffstat (limited to 'packages/taler-wallet-webextension/build-fast-with-linaria.mjs')
-rw-r--r-- | packages/taler-wallet-webextension/build-fast-with-linaria.mjs | 77 |
1 files changed, 77 insertions, 0 deletions
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) + }); + |