Skip to content

Commit c52547a

Browse files
committed
Switch to esbuild
* Removed webpack and babel from project * Bump Tensorflow.js -> 2 * Bump Typescript -> 4 * use ts-node for several TS related concerns * new dev script built on browser-sync as esbuild does not have a native watch/serve mode * enable type=module for native es in Node * use top-level await in some scripts
1 parent 1cca02b commit c52547a

18 files changed

+87
-142
lines changed

.babelrc

Lines changed: 0 additions & 6 deletions
This file was deleted.

.editorconfig

Lines changed: 0 additions & 3 deletions
This file was deleted.

.gitignore

Lines changed: 0 additions & 6 deletions
This file was deleted.

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ env:
1111
- CMD=tsc
1212
- CMD=test
1313
- CMD=build
14+
- CMD=tsc
1415

1516
script: npm run $CMD

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ There is experimental sound: unplug your headphones to rip beeps over your speak
88

99
## Development
1010

11-
```bash
12-
yarn dev
13-
```
11+
* Node.js 15 or higher
12+
13+
`yarn install && yarn dev` to get a watch/recompile server, otherwise just use the build script.
1414

1515
Unit tests are co-located with the code.
1616

bin/dev

Lines changed: 0 additions & 23 deletions
This file was deleted.

bin/dev.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import {exec} from 'child_process';
2+
import Brah from "browser-sync";
3+
4+
// Start the server
5+
const driver = Brah({server: "./dist"});
6+
driver.watch('src/**').on('change', (file) => {
7+
console.log('Source file changed', file);
8+
exec('yarn build', (err, stdout, stderr) => {
9+
console.log('[esbuild]', stdout);
10+
driver.reload();
11+
});
12+
});

bin/tsnode

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/sh
2+
3+
#
4+
# ts-node fell apart with recent node
5+
# releases
6+
#
7+
# workaround applied courtesy of:
8+
#
9+
# https://github.com/TypeStrong/ts-node/issues/935#issuecomment-582673034
10+
#
11+
12+
13+
node --loader @k-foss/ts-esnode --experimental-specifier-resolution=node $@

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@
1717
<body>
1818
<div id="dev"></div>
1919
<canvas id="game" />
20-
<script src="http://localhost:8080/app.js"></script>
20+
<script src="/index.js"></script>
2121
</body>
2222
</html>

package.json

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,36 @@
11
{
22
"name": "snake",
33
"version": "0.0.2",
4-
"description": "A game of snake for the browser using web technologies.",
5-
"main": "index.js",
4+
"description": "A game of snake using JavaScript",
5+
"main": "src/index.ts",
6+
"type": "module",
67
"scripts": {
7-
"build": "webpack -p && mv dist/app.js dist/app_new.js",
8-
"dev": "NODE_ENV=development node bin/dev",
9-
"sim": "babel-node --extensions '.ts,.js' src/sim.ts",
10-
"train": "babel-node --extensions '.ts,.js' src/net/train.js",
11-
"test-model": "babel-node --extensions '.ts,.js' src/net/check_model.js",
8+
"build": "esbuild --bundle src/index.ts --outdir=dist --minify && cp index.html dist",
9+
"build:tfjs": "npm rebuild @tensorflow/tfjs-node-gpu --build-from-source",
10+
"dev": "node bin/dev.js",
11+
"sim": "bin/tsnode src/net/sim.ts",
12+
"train": "bin/tsnode src/net/train.js",
13+
"test-model": "node src/net/check_model.js",
1214
"tsc": "tsc",
13-
"test": "mocha --require ./register-tests.js src/**/*.spec.ts"
15+
"test": "mocha --require ts-node/register src/**/*.spec.ts"
1416
},
15-
"keywords": [ "snake",
17+
"keywords": [
18+
"snake",
1619
"js",
1720
"game"
1821
],
1922
"dependencies": {},
2023
"devDependencies": {
21-
"@babel/core": "^7.0.0",
22-
"@babel/node": "^7.7.7",
23-
"@babel/preset-env": "^7.0.0",
24-
"@babel/preset-typescript": "^7.0.0",
25-
"@babel/register": "^7.6.0",
26-
"@tensorflow/tfjs": "^1.5.1",
27-
"@tensorflow/tfjs-node": "^1.5.1",
28-
"@tensorflow/tfjs-node-gpu": "^1.5.1",
29-
"@types/jasmine": "^3.5.0",
30-
"@types/mocha": "^5.2.7",
31-
"babel-loader": "^8.0.6",
32-
"expect": "^24.9.0",
33-
"mocha": "^6.0.0",
34-
"typescript": "^3.7.5",
35-
"webpack": "^4.16.3",
36-
"webpack-cli": "^3.1.0",
37-
"webpack-dev-server": "^3.1.5"
24+
"@k-foss/ts-esnode": "^1.7.0",
25+
"@tensorflow/tfjs": "^2.6.0",
26+
"@tensorflow/tfjs-node": "^2.6.0",
27+
"@tensorflow/tfjs-node-gpu": "^2.6.0",
28+
"@types/mocha": "^8.0.0",
29+
"browser-sync": "^2.26.13",
30+
"esbuild": "^0.7.21",
31+
"expect": "^26.6.1",
32+
"mocha": "^8.2.0",
33+
"typescript": "^4.0.3"
3834
},
3935
"author": "Avindra Goolcharan",
4036
"license": "MIT",

0 commit comments

Comments
 (0)