Bläddra i källkod

Move to esbuild

customisations
alemart 7 månader sedan
förälder
incheckning
e9a705cda8
5 ändrade filer med 458 tillägg och 6470 borttagningar
  1. 1
    1
      .gitignore
  2. 2
    1
      docs/hooks.py
  3. 77
    0
      esbuild.mjs
  4. 369
    6456
      package-lock.json
  5. 9
    12
      package.json

+ 1
- 1
.gitignore Visa fil

@@ -20,7 +20,7 @@ Session.vim
20 20
 
21 21
 # mine
22 22
 node_modules/*
23
-dist/*.map
23
+www/
24 24
 site/
25 25
 docs/__pycache__/*
26 26
 demos/**/*.blend1

+ 2
- 1
docs/hooks.py Visa fil

@@ -10,7 +10,8 @@ def copy_static_files(config, **kwargs):
10 10
 def copy_directory(dir_path, site_dir):
11 11
     d = os.path.join(site_dir, dir_path)
12 12
     os.makedirs(d, exist_ok=True)
13
-    copy_tree(dir_path, d)
13
+    s = dir_path if dir_path != "dist" else "www/dist"
14
+    copy_tree(s, d)
14 15
 
15 16
 def copy_tree(src, dst, symlinks=False, ignore=None):
16 17
     for item in os.listdir(src):

+ 77
- 0
esbuild.mjs Visa fil

@@ -0,0 +1,77 @@
1
+import * as esbuild from 'esbuild';
2
+import { readFile } from 'fs/promises';
3
+
4
+const argv = process.argv.slice(2);
5
+const json = await readFile(new URL('package.json', import.meta.url));
6
+const pack = JSON.parse(json);
7
+const production = (argv.indexOf('--dev') < 0);
8
+const minify = (argv.indexOf('--minify') >= 0);
9
+const serve = (argv.indexOf('--serve') >= 0);
10
+
11
+const options = {
12
+    //entryPoints: ['src/main.ts'], // AR.default
13
+    stdin: {
14
+        contents: 'import AR from "./main.ts";\nmodule.exports = AR;',
15
+        resolveDir: 'src',
16
+        sourcefile: '__main.ts',
17
+    },
18
+    bundle: true,
19
+    minify: minify,
20
+    target: ['es2020'],
21
+    format: 'iife',
22
+    globalName: 'AR',
23
+    define: {
24
+        __AR_VERSION__: JSON.stringify(pack.version),
25
+        __AR_DEVELOPMENT_MODE__: String(!production),
26
+        __AR_WEBSITE__: JSON.stringify(pack.homepage),
27
+    },
28
+    legalComments: 'inline',
29
+    banner: { js: generateBanner() },
30
+    footer: { js: serve ? generateLiveReloadCode() : '' },
31
+    outfile: 'www/dist/' + (minify ? 'encantar.min.js' : 'encantar.js'),
32
+    sourcemap: !production && 'linked',
33
+    logLevel: 'info',
34
+};
35
+
36
+if(!serve) {
37
+    await esbuild.build(options);
38
+    process.exit(0);
39
+}
40
+
41
+const ctx = await esbuild.context(options);
42
+await ctx.watch();
43
+await ctx.serve({
44
+    host: '0.0.0.0',
45
+    port: 8000,
46
+    servedir: 'www',
47
+});
48
+
49
+function generateBanner()
50
+{
51
+    const { version, description, homepage, license } = pack;
52
+    const author = pack.author.replace('@', '(at)');
53
+    const year = new Date().getFullYear();
54
+    const date = new Date().toISOString();
55
+
56
+    return [
57
+    `/*!`,
58
+    ` * encantar.js version ${version}`,
59
+    ` * ${description}`,
60
+    ` * Copyright 2022-${year} ${author}`,
61
+    ` * ${homepage}`,
62
+    ` *`,
63
+    ` * @license ${license}`,
64
+    ` * Date: ${date}`,
65
+    `*/`
66
+    ].join('\n');
67
+}
68
+
69
+function generateLiveReloadCode()
70
+{
71
+    return `
72
+    (function liveReload() {
73
+       new EventSource('/esbuild').
74
+       addEventListener('change', () => location.reload());
75
+    })();
76
+    `;
77
+}

+ 369
- 6456
package-lock.json
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 9
- 12
package.json Visa fil

@@ -1,5 +1,5 @@
1 1
 {
2
-  "name": "encantar-js",
2
+  "name": "encantar",
3 3
   "version": "0.4.1",
4 4
   "description": "GPU-accelerated Augmented Reality for the web",
5 5
   "author": "Alexandre Martins <alemartf@gmail.com> (https://github.com/alemart)",
@@ -26,25 +26,22 @@
26 26
     "threejs",
27 27
     "3d"
28 28
   ],
29
-  "main": "dist/encantar.js",
29
+  "type": "module",
30
+  "main": "src/main.ts",
30 31
   "scripts": {
31
-    "start": "webpack serve --mode development --env PORT=8000 --env minimize=1",
32
-    "build-dev": "npm run update && npm run clean && webpack --mode development",
33
-    "build": "npm run update && npm run clean && webpack --mode production && webpack --mode production --env minimize=1",
34
-    "clean": "rm -rf dist/encantar*.js",
32
+    "start": "node esbuild.mjs --dev --minify --serve",
33
+    "build": "tsc --noEmit && npm run clean && node esbuild.mjs && node esbuild.mjs --minify",
34
+    "clean": "rm -rf www/dist/*.*",
35 35
     "update": "npm update speedy-vision",
36
-    "deploy": "mkdocs gh-deploy",
36
+    "deploy": "npm run build && mkdocs gh-deploy",
37 37
     "test": "echo \"Error: no test specified\" && exit 1"
38 38
   },
39 39
   "dependencies": {
40 40
     "speedy-vision": "github:alemart/speedy-vision#v0.9.1"
41 41
   },
42 42
   "devDependencies": {
43
-    "ts-loader": "^9.5.1",
44
-    "typescript": "^4.9.5",
45
-    "webpack": "^5.92.1",
46
-    "webpack-cli": "^4.9.1",
47
-    "webpack-dev-server": "^4.5.0"
43
+    "esbuild": "0.24.2",
44
+    "typescript": "^4.9.5"
48 45
   },
49 46
   "config": {}
50 47
 }

Laddar…
Avbryt
Spara