From fdd56335309017016362fa4a9ead606fdae9ee7e Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 24 Apr 2023 11:43:23 -0300 Subject: [PATCH] using build from web-utils --- packages/demobank-ui/build.mjs | 155 +----------------------------- packages/demobank-ui/dev.mjs | 15 ++- packages/demobank-ui/package.json | 1 - packages/web-util/tsconfig.json | 2 +- pnpm-lock.yaml | 8 +- 5 files changed, 16 insertions(+), 165 deletions(-) diff --git a/packages/demobank-ui/build.mjs b/packages/demobank-ui/build.mjs index f30fe5490..a89b9742f 100755 --- a/packages/demobank-ui/build.mjs +++ b/packages/demobank-ui/build.mjs @@ -15,156 +15,7 @@ GNU Taler; see the file COPYING. If not, see */ -import esbuild from "esbuild"; -import path from "path"; -import fs from "fs"; -import sass from "sass"; + import { buildProd } from "@gnu-taler/web-util/lib/index.build" -// eslint-disable-next-line no-undef -const BASE = process.cwd(); - -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) => { - //console.log("onresolve", JSON.stringify(args, undefined, 2)); - return { - path: preact, - }; - }); - }, -}; - -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(BASE, 'src'), /.test.ts$/) - -const entryPoints = ["src/index.tsx", "src/stories.tsx", ...allTestFiles]; - -let GIT_ROOT = BASE; -while (!fs.existsSync(path.join(GIT_ROOT, ".git")) && GIT_ROOT !== "/") { - GIT_ROOT = path.join(GIT_ROOT, "../"); -} -if (GIT_ROOT === "/") { - // eslint-disable-next-line no-undef - console.log("not found"); - // eslint-disable-next-line no-undef - process.exit(1); -} -const GIT_HASH = GIT_ROOT === "/" ? undefined : git_hash(); - -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) { - return rev; - } else { - return fs.readFileSync(path.join(GIT_ROOT, ".git", rev)).toString().trim(); - } -} - -// FIXME: Put this into some helper library. -function copyFilesPlugin(options) { - return { - name: "copy-files", - setup(build) { - build.onEnd(() => { - for (const fop of options) { - fs.copyFileSync(fop.src, fop.dest); - } - }); - }, - }; -} - -const DEFAULT_SASS_FILTER = /\.(s[ac]ss|css)$/ - -const buildSassPlugin = { - name: "custom-build-sass", - setup(build) { - - build.onLoad({ filter: DEFAULT_SASS_FILTER }, ({ path: file }) => { - const resolveDir = path.dirname(file) - const { css: contents } = sass.compile(file, { loadPaths: ["./"] }) - - return { - resolveDir, - loader: 'css', - contents - } - }); - - }, -}; - -export const buildConfig = { - entryPoints: [...entryPoints], - bundle: true, - outdir: "dist", - minify: false, - loader: { - ".svg": "file", - ".png": "dataurl", - ".jpeg": "dataurl", - '.ttf': 'file', - '.woff': 'file', - '.woff2': 'file', - '.eot': 'file', - }, - target: ["es6"], - format: "esm", - platform: "browser", - sourcemap: true, - jsxFactory: "h", - jsxFragment: "Fragment", - external: ["async_hooks"], - define: { - __VERSION__: `"${_package.version}"`, - __GIT_HASH__: `"${GIT_HASH}"`, - }, - plugins: [ - preactCompatPlugin, - copyFilesPlugin([ - { - src: "./src/index.html", - dest: "./dist/index.html", - }, - ]), - buildSassPlugin - ], -}; - -await esbuild.build(buildConfig) + await buildProd(["src/index.tsx"]) + \ No newline at end of file diff --git a/packages/demobank-ui/dev.mjs b/packages/demobank-ui/dev.mjs index 35a9fa16c..74df51195 100755 --- a/packages/demobank-ui/dev.mjs +++ b/packages/demobank-ui/dev.mjs @@ -16,15 +16,20 @@ */ import { serve } from "@gnu-taler/web-util/lib/index.node"; -import esbuild from "esbuild"; -import { buildConfig } from "./build.mjs"; +import { initializeDev, getFilesInSource } from "@gnu-taler/web-util/lib/index.build" -buildConfig.inject = ['./node_modules/@gnu-taler/web-util/lib/live-reload.mjs'] +const allTestFiles = getFilesInSource(/.test.tsx?$/); +const devEntryPoints = ["src/stories.tsx", "src/index.tsx", ...allTestFiles]; + +const buildDev = initializeDev(devEntryPoints) + +await buildDev(); serve({ - folder: './dist', + folder: './dist/dev', port: 8080, source: './src', + insecure: true, development: true, - onUpdate: async () => esbuild.build(buildConfig) + onUpdate: buildDev }) diff --git a/packages/demobank-ui/package.json b/packages/demobank-ui/package.json index 586beae05..f23173da4 100644 --- a/packages/demobank-ui/package.json +++ b/packages/demobank-ui/package.json @@ -50,7 +50,6 @@ "@types/node": "^18.11.17", "@typescript-eslint/eslint-plugin": "^5.41.0", "@typescript-eslint/parser": "^5.41.0", - "async_hooks": "^1.0.0", "bulma": "^0.9.4", "bulma-checkbox": "^1.1.1", "bulma-radio": "^1.1.1", diff --git a/packages/web-util/tsconfig.json b/packages/web-util/tsconfig.json index fc558e59b..fc69cad06 100644 --- a/packages/web-util/tsconfig.json +++ b/packages/web-util/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "composite": true, "declaration": true, - "declarationMap": false, + "declarationMap": true, "target": "ES6", "module": "ESNext", "jsx": "react", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c7b2df4bf..2dc61a37f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -102,7 +102,6 @@ importers: '@types/node': ^18.11.17 '@typescript-eslint/eslint-plugin': ^5.41.0 '@typescript-eslint/parser': ^5.41.0 - async_hooks: ^1.0.0 bulma: ^0.9.4 bulma-checkbox: ^1.1.1 bulma-radio: ^1.1.1 @@ -140,7 +139,6 @@ importers: '@types/node': 18.11.17 '@typescript-eslint/eslint-plugin': 5.41.0_2kpzrn7ygxrevwp2scfdydbp5u '@typescript-eslint/parser': 5.41.0_typescript@4.9.4 - async_hooks: 1.0.0 bulma: 0.9.4 bulma-checkbox: 1.2.1 bulma-radio: 1.2.0 @@ -573,6 +571,7 @@ importers: preact-render-to-string: ^5.2.6 prettier: ^2.5.1 rimraf: ^3.0.2 + sass: 1.56.1 swr: 2.0.3 tslib: ^2.4.0 typescript: ^4.9.4 @@ -593,6 +592,7 @@ importers: preact-render-to-string: 5.2.6_preact@10.11.3 prettier: 2.7.1 rimraf: 3.0.2 + sass: 1.56.1 swr: 2.0.3 tslib: 2.4.1 typescript: 4.9.4 @@ -4913,10 +4913,6 @@ packages: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} dev: true - /async_hooks/1.0.0: - resolution: {integrity: sha512-t4BSJgx48V3e7U6Ll3/WOUNmxIRPzmPdxVfgbyzcnRItEnn4iKp4F//b0sV3L9hzbdr5qxWdNWzOF7t+rjYSfA==} - dev: true - /asynckit/0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}