summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/build-fast-with-linaria.mjs
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2022-03-24 16:02:38 -0300
committerSebastian <sebasjm@gmail.com>2022-03-24 16:02:38 -0300
commitf45ef767016a425d04cce7755b27aceff292603c (patch)
tree8e6e2aa47bf282d3db08f54264f2c9db2179ba90 /packages/taler-wallet-webextension/build-fast-with-linaria.mjs
parent2c6b83ffea8d7b898d7ccb52b2b026c2e4ba6f24 (diff)
downloadwallet-core-f45ef767016a425d04cce7755b27aceff292603c.tar.gz
wallet-core-f45ef767016a425d04cce7755b27aceff292603c.tar.bz2
wallet-core-f45ef767016a425d04cce7755b27aceff292603c.zip
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.mjs77
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)
+ });
+