aboutsummaryrefslogtreecommitdiff
path: root/packages/web-util/build.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'packages/web-util/build.mjs')
-rwxr-xr-xpackages/web-util/build.mjs127
1 files changed, 76 insertions, 51 deletions
diff --git a/packages/web-util/build.mjs b/packages/web-util/build.mjs
index 8e74f69c7..0b015f22c 100755
--- a/packages/web-util/build.mjs
+++ b/packages/web-util/build.mjs
@@ -15,34 +15,38 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import esbuild from 'esbuild'
-import path from "path"
-import fs from "fs"
+import esbuild from "esbuild";
+import path from "path";
+import fs from "fs";
// eslint-disable-next-line no-undef
-const BASE = process.cwd()
+const BASE = process.cwd();
-let GIT_ROOT = BASE
-while (!fs.existsSync(path.join(GIT_ROOT, '.git')) && GIT_ROOT !== '/') {
- GIT_ROOT = path.join(GIT_ROOT, '../')
+let GIT_ROOT = BASE;
+while (!fs.existsSync(path.join(GIT_ROOT, ".git")) && GIT_ROOT !== "/") {
+ GIT_ROOT = path.join(GIT_ROOT, "../");
}
-if (GIT_ROOT === '/') {
+if (GIT_ROOT === "/") {
// eslint-disable-next-line no-undef
- console.log("not found")
+ console.log("not found");
// eslint-disable-next-line no-undef
process.exit(1);
}
-const GIT_HASH = GIT_ROOT === '/' ? undefined : git_hash()
+const GIT_HASH = GIT_ROOT === "/" ? undefined : git_hash();
-
-let _package = JSON.parse(fs.readFileSync(path.join(BASE, 'package.json')));
+let _package = JSON.parse(fs.readFileSync(path.join(BASE, "package.json")));
function git_hash() {
- const rev = fs.readFileSync(path.join(GIT_ROOT, '.git', 'HEAD')).toString().trim().split(/.*[: ]/).slice(-1)[0];
- if (rev.indexOf('/') === -1) {
+ const rev = fs
+ .readFileSync(path.join(GIT_ROOT, ".git", "HEAD"))
+ .toString()
+ .trim()
+ .split(/.*[: ]/)
+ .slice(-1)[0];
+ if (rev.indexOf("/") === -1) {
return rev;
} else {
- return fs.readFileSync(path.join(GIT_ROOT, '.git', rev)).toString().trim();
+ return fs.readFileSync(path.join(GIT_ROOT, ".git", rev)).toString().trim();
}
}
@@ -50,20 +54,18 @@ const buildConfigBase = {
outdir: "lib",
bundle: true,
minify: false,
- target: [
- 'es6'
- ],
+ target: ["es2021"],
loader: {
- '.key': 'text',
- '.crt': 'text',
- '.html': 'text',
+ ".key": "text",
+ ".crt": "text",
+ ".html": "text",
},
sourcemap: true,
define: {
- '__VERSION__': `"${_package.version}"`,
- '__GIT_HASH__': `"${GIT_HASH}"`,
+ __VERSION__: `"${_package.version}"`,
+ __GIT_HASH__: `"${GIT_HASH}"`,
},
-}
+};
/**
* Build time libraries, under node runtime
@@ -72,36 +74,52 @@ const buildConfigBuild = {
...buildConfigBase,
entryPoints: ["src/index.build.ts"],
outExtension: {
- '.js': '.mjs'
+ ".js": ".mjs",
},
- format: 'esm',
- platform: 'node',
+ format: "esm",
+ platform: "node",
external: ["esbuild"],
// https://github.com/evanw/esbuild/issues/1921
// How to fix "Dynamic require of "os" is not supported"
// esbuild cannot convert external "static" commonjs require statements to static esm imports
- banner: {
+ banner: {
js: `
import { fileURLToPath } from 'url';
import { createRequire as topLevelCreateRequire } from 'module';
const require = topLevelCreateRequire(import.meta.url);
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
-`
+`,
},
};
/**
* Development libraries, under node runtime
*/
+const buildConfigTesting = {
+ ...buildConfigBase,
+ entryPoints: ["src/index.testing.ts"],
+ outExtension: {
+ ".js": ".mjs",
+ },
+ format: "esm",
+ platform: "browser",
+ external: ["preact", "@gnu-taler/taler-util", "jed", "swr", "axios"],
+ jsxFactory: "h",
+ jsxFragment: "Fragment",
+};
+
+/**
+ * Testing libraries, under node runtime
+ */
const buildConfigNode = {
...buildConfigBase,
entryPoints: ["src/index.node.ts", "src/cli.ts"],
outExtension: {
- '.js': '.cjs'
+ ".js": ".cjs",
},
- format: 'cjs',
- platform: 'node',
+ format: "cjs",
+ platform: "node",
external: ["preact"],
};
@@ -110,26 +128,33 @@ const buildConfigNode = {
*/
const buildConfigBrowser = {
...buildConfigBase,
- entryPoints: ["src/tests/mock.ts", "src/tests/swr.ts", "src/index.browser.ts", "src/live-reload.ts", 'src/stories.tsx'],
+ entryPoints: [
+ "src/tests/mock.ts",
+ "src/tests/swr.ts",
+ "src/index.browser.ts",
+ "src/live-reload.ts",
+ "src/stories.tsx",
+ ],
outExtension: {
- '.js': '.mjs'
+ ".js": ".mjs",
},
- format: 'esm',
- platform: 'browser',
- external: ["preact", "@gnu-taler/taler-util", "jed","swr","axios"],
- jsxFactory: 'h',
- jsxFragment: 'Fragment',
+ format: "esm",
+ platform: "browser",
+ external: ["preact", "@gnu-taler/taler-util", "jed", "swr", "axios"],
+ jsxFactory: "h",
+ jsxFragment: "Fragment",
};
-[buildConfigNode, buildConfigBrowser, buildConfigBuild].forEach((config) => {
- esbuild
- .build(config)
- .catch((e) => {
- // eslint-disable-next-line no-undef
- console.log(e)
- // eslint-disable-next-line no-undef
- process.exit(1)
- });
-
-})
-
+[
+ buildConfigNode,
+ buildConfigBrowser,
+ buildConfigBuild,
+ buildConfigTesting,
+].forEach((config) => {
+ esbuild.build(config).catch((e) => {
+ // eslint-disable-next-line no-undef
+ console.log(e);
+ // eslint-disable-next-line no-undef
+ process.exit(1);
+ });
+});