aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2022-08-01 00:47:02 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2022-08-01 01:06:27 +0200
commit80126c76f39d30917b94f24b97a8690681b815c0 (patch)
treebf60d7ea2de8be12e6ba67aa7b10db01f0e689ec
parentStatic should create its own directories when installing. (diff)
downloadcalp-80126c76f39d30917b94f24b97a8690681b815c0.tar.gz
calp-80126c76f39d30917b94f24b97a8690681b815c0.tar.xz
Change JavaScript build system to esbuild.
Esbuild is way faster, and feels less hacky. One downside is that it doesn't actually check Typescript types. However, typescript can still be installed alongside, and has the fancy --noEmit flag for just this situation.
-rw-r--r--module/calp/html/view/calendar.scm2
-rw-r--r--static/Makefile23
-rwxr-xr-xstatic/make-watch5
-rw-r--r--static/package.json10
4 files changed, 22 insertions, 18 deletions
diff --git a/module/calp/html/view/calendar.scm b/module/calp/html/view/calendar.scm
index 9378737f..99109741 100644
--- a/module/calp/html/view/calendar.scm
+++ b/module/calp/html/view/calendar.scm
@@ -119,7 +119,7 @@ window.default_calendar='~a';"
,(include-alt-css "/static/dark.css" '(title "Dark"))
,(include-alt-css "/static/light.css" '(title "Light"))
- (script (@ (src "/static/script.out.js")))
+ (script (@ (src "/static/script.js")))
(script (@ (src "/static/user/user-additions.js")))
(style ,(lambda () (calendar-styles calendars #t)))
diff --git a/static/Makefile b/static/Makefile
index 0c6023b0..c348b3a8 100644
--- a/static/Makefile
+++ b/static/Makefile
@@ -1,22 +1,29 @@
-.PHONY: all install clean watch
+.PHONY: all install clean watch watch-esbuild
-TARGETS := style.css smallcal.css script.out.js directory-listing.css
+TARGETS := style.css smallcal.css script.js directory-listing.css
WATCH=
TS_FILES = $(shell find . -type f -name \*.ts -not -path */node_modules/*)
JS_FILES = $(TS_FILES:%.ts=%.js)
+ESBUILD_LOGLEVEL=warning
+# Variable for adding extra flags
+ESBUILD_FLAGS =
+# Used flags
+__ESBUILD_FLAGS = --log-level=$(ESBUILD_LOGLEVEL) \
+ --sourcemap --bundle --outdir=$(CURDIR) \
+ $(ESBUILD_FLAGS)
+
export PATH := $(shell npm bin):$(PATH)
all: $(TARGETS)
-%.map.json: %.out.js
- tail -n1 $< | tail -c+65 | base64 --decode | jq '.' > $@
-
-# r!browserify --list script.ts -p tsify | xargs -L1 basename | tac
# script explicitly named, since that is our entry point
-script.out.js: script.ts $(TS_FILES)
- browserify $< -p tsify --noImplicitAny --debug -o $@
+script.js: script.ts $(TS_FILES)
+ esbuild $< $(__ESBUILD_FLAGS)
+
+watch-esbuild:
+ $(MAKE) ESBUILD_FLAGS+='--watch' ESBUILD_LOGLEVEL=info -B script.js
deps.svg: $(TS_FILES)
madge --image $@ $^
diff --git a/static/make-watch b/static/make-watch
index c985b37f..b328038a 100755
--- a/static/make-watch
+++ b/static/make-watch
@@ -8,15 +8,14 @@ cd "$here" || {
export PATH="$here/node_modules/.bin:$PATH"
-# Note that 'tsc --watch' doesn't provide the files we are using. It's
-# just here for debug.
if [ -n "$TMUX" ]; then
tmux new-window "scss --watch -I. style.scss:style.css"
tmux new-window "tsc --watch"
else
tmux \
new-session "scss --watch -I. style.scss:style.css" \; \
- split-window "tsc --watch" \; \
+ split-window "tsc --watch --noEmit" \; \
+ split-window "make watch-esbuild" \; \
rename-session "calp watch" \; \
select-layout even-vertical
diff --git a/static/package.json b/static/package.json
index 27ea218a..81db3a61 100644
--- a/static/package.json
+++ b/static/package.json
@@ -1,13 +1,11 @@
{
- "dependencies": {
- "browserify": "^17.0.0",
- "tsify": "^5.0.4"
- },
"devDependencies": {
- "@types/uuid": "^8.3.1",
- "uuid": "^8.3.2"
+ "@types/uuid": "^8.3.1"
},
"optionalDependencies": {
"madge": "^5.0.1"
+ },
+ "dependencies": {
+ "uuid": "^8.3.2"
}
}