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