BT  ·  2026-06-08

Makefile

 1SHELL := $(shell command -v bash)
 2.SHELLFLAGS := -euo pipefail -c
 3
 4export MODE="development"
 5RESCRIPT_COMPILER := node_modules/.bin/rescript
 6
 7dev: $(RESCRIPT_COMPILER)
 8	@echo "concurrently: (1) compiling rescript (2) vite dev (3) copying css in mode=${MODE}"
 9	@concurrently \
10		"rescript" "find src/ -name '*.res' | entr pnpm exec rescript build" \
11		"vite" "pnpm exec vite --clearScreen false" \
12		"css" "find src/ -name '*.css' | entr $(MAKE) -s css" \
13		"static" "find src/static/ -name '*' | entr $(MAKE) -s static" \
14		"js" "find src/ffi/ -name '*.?s' | entr $(MAKE) -s js"
15.PHONY: dev
16
17css:
18	@cp src/index.css lib/es6/src/
19	@echo "moved updated CSS files"
20.PHONY: css
21
22static:
23	@mkdir -p lib/es6/src/static
24	@cp src/static/* lib/es6/src/static/
25	@echo "moved updated static files"
26.PHONY: static
27
28js:
29	@cp src/ffi/*.js lib/es6/src/ffi/
30	@cp src/ffi/*.ts lib/es6/src/ffi/
31	@echo "moved updated JS files"
32.PHONY: js
33
34build: $(RESCRIPT_COMPILER)
35	pnpm run res:clean
36	pnpm run res:build
37	pnpm run build
38.PHONY: build
39
40build-ci:
41	pnpm ci
42	pnpm add @rescript/core
43	pnpm run res:clean
44	pnpm run res:build
45	ENV=prod pnpm run build
46.PHONY: build-ci
47
48
49test: $(RESCRIPT_COMPILER)
50	pnpm run res:build
51	pnpm run test
52.PHONY: test
53
54clean:
55	pnpm run res:clean
56.PHONY: clean
57
58# builds the rescript compiler binary in the path
59node_modules/.bin/rescript:
60	pnpm add @rescript/core