-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathserver.mk
More file actions
129 lines (100 loc) · 3.47 KB
/
server.mk
File metadata and controls
129 lines (100 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
REPO_ROOT ?= $(shell git rev-parse --show-toplevel)
FRAMEWORK:=none
-include $(REPO_ROOT)/base.mk
ifdef SERVER
APP_NAME:=$(SERVER)
IMAGE:=`cd builds && docker buildx bake --print $(SERVER) 2>/dev/null | jq -r '.target."$(SERVER)".tags[0]'`
# NODE_ENV=development pnpm tsx watch ./dist/out/apps/$(SERVER)/main.js
# detect main.bun.ts run by bun
ifneq ($(wildcard src/apps/$(SERVER)/main.bun.ts),)
dev:
NODE_ENV=development bun --watch ./src/apps/$(SERVER)/main.bun.ts
else
dev:
NODE_ENV=development pnpm node --loader ts-node/esm --watch ./src/apps/$(SERVER)/main.ts
debug:
NODE_OPTIONS='--inspect' NODE_ENV=development node --loader ts-node/esm ./src/apps/$(SERVER)/main.ts
endif
build: swc-build
pnpm tsx src/scripts/bundle.esbuild.ts
sha256sum dist/apps/$(SERVER)/main.mjs
# --enable-source-maps
# 20mb 启动 39s,不开启 启动 2s
run: build
NODE_ENV=production pnpm node ./dist/apps/$(SERVER)/main.mjs
image-build-prepare:
mkdir -p builds/$(SERVER)
rsync -av dist/apps/$(SERVER)/ builds/$(SERVER)/app/
! test -e public || rsync -av public/ builds/$(SERVER)/app/public/
image: image-build-prepare
cd builds && docker buildx bake --load $(SERVER)
image-push: image-build-prepare
cd builds && TAG=$(IMAGE_TAG) docker buildx bake --push $(SERVER)
image-tag:
cd builds && TAG=$(IMAGE_TAG) docker buildx bake --print $(SERVER) 2>/dev/null | jq -r '.target."$(SERVER)".tags[0]'
deploy: build image-push
DOCKER_RUN_FLAGS?=--rm -it -p 3000:3000 --name $(SERVER)
ifneq ($(wildcard .env.local),)
DOCKER_RUN_FLAGS:=$(DOCKER_RUN_FLAGS) --env-file .env.local
endif
image-run: image
docker run $(DOCKER_RUN_FLAGS) --init $(IMAGE)
image-inspect: image
docker run $(DOCKER_RUN_FLAGS) --entrypoint bash -w /app $(IMAGE)
doc:
mkdir -p docs/reference/$(SERVER)
mkdir -p docs/$(SERVER)/reference
command -v widdershins || npm add -g widdershins
curl -o docs/$(SERVER)/reference/openapi.json http://127.0.0.1:3000/api-json
widdershins -u docs/widdershins/templates/openapi3 --omitHeader --summary --language_tabs='javascript:JavaScript' --language_tabs='http:HTTP' --language_tabs='shell:Shell' -o=docs/reference/includes/_$(SERVER).md -- docs/$(SERVER)/reference/openapi.json
else
list:
@ls src/apps/* -d | xargs -n 1 basename
build:
@echo Building all
SERVER=`find src/apps -mindepth 1 -maxdepth 1 -type d -print -exec basename {} \\; | paste -sd,` pnpm tsx src/scripts/bundle.esbuild.ts
image-build-prepare:
ls src/apps/* -d | xargs -n 1 basename | xargs -I {} make SERVER={} image-build-prepare
image-push: image-build-prepare
cd builds && TAG=$(IMAGE_TAG) docker buildx bake --push
image-print:
cd builds && TAG=$(IMAGE_TAG) docker buildx bake --print
deploy: image-push
dev: list
false
dev\:%:
@echo "Dev $*"
@make SERVER=$(*) dev
debug\:%:
@echo "Debug $*"
@make SERVER=$(*) debug
run\:%:
@echo "Running $*"
@make SERVER=$(*) run
build\:%:
@echo "Building $*"
@make SERVER=$(*) build
image\:%:
@echo "Building image $*"
@make SERVER=$(*) image
image-run\:%:
@echo "Running image $*"
@make SERVER=$(*) image-run
deploy\:%:
@echo "Deploy $*"
@make SERVER=$(*) deploy
endif
swc-build:
pnpm swc ./src -d ./dist/out
swc-watch:
rm -rf ./dist/out/*
pnpm swc --watch ./src -d ./dist/out
fix:
pnpm eslint --fix ./src
doc-preview:
docker run --rm --name slate -p 4567:4567 \
-v `pwd`/dist/docs/build:/srv/slate/build \
-v `pwd`/docs/reference/index.html.md:/srv/slate/source/index.html.md \
-v `pwd`/docs/reference/includes:/srv/slate/source/includes \
slatedocs/slate serve
chore: fmt fix