commit c151887833d1b0e1d442dd0ce9e9648476585b5f
parent 49c975f30ca743f957e0f5ff9728bdb2e26c2e3f
Author: finwo <finwo@pm.me>
Date: Sat, 13 Sep 2025 16:32:37 +0200
Hello world init
Diffstat:
7 files changed, 54 insertions(+), 60 deletions(-)
diff --git a/packages/app/.gitignore b/packages/app/.gitignore
@@ -0,0 +1 @@
+/dist/
diff --git a/packages/app/esbuild.js b/packages/app/esbuild.js
@@ -38,66 +38,36 @@ const config = {
};
const buildList = [];
-const styles = ['AppModule/global.css'];
-
-// esbuild
-// .build(config)
-// .then(async () => {
+const styles = ['global.css'];
+esbuild
+ .build(config)
+ .then(async () => {
// try { fs.mkdirSync('./dist/assets'); } catch { /* empty */ }
// const r = await cpy(__dirname + '/src/assets/*', __dirname + '/dist/assets');
-
// try { fs.mkdirSync('./dist/AppModule'); } catch { /* empty */ }
-// fs.copyFileSync(`./src/AppModule/global.css`, `./dist/AppModule/global.css`);
-
-// for(const name of Object.keys(entryPoints)) {
-// buildList.push(`${name}.js`);
-// try {
-// fs.statSync(config.outdir + `/${name}.css`);
-// styles.push(`${name}.css`);
-// } catch(e) {
-// // Intentionally empty
-// }
-// }
-
-// const floaticonSize = 'min(25vw,25vh)';
-// fs.writeFileSync(config.outdir + `/index.html`, `<!DOCTYPE html>
-// <html>
-// <head>
-// <meta charset="utf-8">
-// <meta name="viewport" content="width=device-width,initial-scale=1">
-
-// ${styles.map(name => `<link rel="preload" as="style" href="${name}" onload="this.onload=null;this.rel='stylesheet'"/>`).join('\n ')}
-// </head>
-// <body>
-
-// <!-- Should be overwritten by mounting app on body -->
-// <div id="floaticon">
-// <style>
-// #floaticon {
-// background: #FFF;
-// position: fixed;
-// width: 100vw;
-// height: 100vh;
-// padding-top: calc(50vh - (${floaticonSize} / 2));
-// text-align: center;
-// top: 0;
-// transition: opacity 300ms;
-// opacity: 1;
-// }
-// #floaticon > img {
-// max-height: ${floaticonSize};
-// }
-// #floaticon.fade {
-// opacity: 0;
-// }
-// </style>
-// <img src="assets/logo.png">
-// </div>
-
-// ${buildList.map(name => `<script type="module" src="${name}" defer></script>`).join('\n ')}
-// </body>
-// </html>
-// `);
-
-// })
+ fs.copyFileSync(`./src/global.css`, `./dist/global.css`);
+ for(const name of Object.keys(entryPoints)) {
+ buildList.push(`${name}.js`);
+ try {
+ fs.statSync(config.outdir + `/${name}.css`);
+ styles.push(`${name}.css`);
+ } catch(e) {
+ // Intentionally empty
+ }
+ }
+
+ fs.writeFileSync(config.outdir + `/index.html`, `<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ ${styles.map(name => `<link rel="preload" as="style" href="${name}" onload="this.onload=null;this.rel='stylesheet'"/>`).join('\n ')}
+ </head>
+ <body>
+ ${buildList.map(name => `<script type="module" src="${name}" defer></script>`).join('\n ')}
+ </body>
+</html>
+`);
+
+ })
diff --git a/packages/app/package.json b/packages/app/package.json
@@ -3,7 +3,11 @@
"version": "0.0.1",
"main": "dist/main.js",
"scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "watch": "npx -y nodemon -w src -e css,ts,tsx --exec npm -- run build",
+ "serve": "npx -y serve dist",
+ "dev": "npx -y concurrently 'npm run watch' 'npm run serve'",
+ "build": "node esbuild.js"
},
"keywords": [],
"author": "",
@@ -12,5 +16,8 @@
"devDependencies": {
"cpy": "^12.0.1",
"esbuild": "^0.25.9"
+ },
+ "dependencies": {
+ "mithril": "^2.3.7"
}
}
diff --git a/packages/app/src/AppModule/index.ts b/packages/app/src/AppModule/index.ts
diff --git a/packages/app/src/component/app.tsx b/packages/app/src/component/app.tsx
@@ -0,0 +1,9 @@
+export default {
+ view: function() {
+ return (
+ <div>
+ Hello World!
+ </div>
+ );
+ },
+};
diff --git a/packages/app/src/global.css b/packages/app/src/global.css
@@ -0,0 +1,5 @@
+:root {
+ background: #000000;
+ color: #FFFFFF;
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
+}
diff --git a/packages/app/src/main.ts b/packages/app/src/main.ts
@@ -0,0 +1,2 @@
+globalThis.m = require('mithril');
+m.mount(document.body, require('./component/app.tsx').default);