42 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh
 | |
| # start-dev.sh — robust on QNAP/Container Station
 | |
| set -e
 | |
| 
 | |
| # ===== 1) ENV defaults (ดีต่อ NFS/QNAP) =====
 | |
| : "${PORT:=3001}"
 | |
| : "${CHOKIDAR_USEPOLLING:=1}"
 | |
| : "${CHOKIDAR_INTERVAL:=300}"
 | |
| : "${WATCHPACK_POLLING:=true}"
 | |
| export PORT CHOKIDAR_USEPOLLING CHOKIDAR_INTERVAL WATCHPACK_POLLING
 | |
| 
 | |
| # ===== 2) ใช้ deps ที่ bake ไว้ถ้ามี (/opt/runtime/node_modules) =====
 | |
| BAKED="/opt/runtime/node_modules"
 | |
| if [ -d "$BAKED" ]; then
 | |
|   # พยายามชี้ /app/node_modules → /opt/runtime/node_modules (ครั้งเดียวพอ)
 | |
|   if [ ! -L /app/node_modules ]; then
 | |
|     if [ ! -e /app/node_modules ] || [ -z "$(ls -A /app/node_modules 2>/dev/null)" ]; then
 | |
|       mkdir -p /app 2>/dev/null || true
 | |
|       # สำคัญ: ชี้ที่ /app/node_modules ตรง ๆ (ไม่ใช่ node_modules/node_modules)
 | |
|       ln -sfn "$BAKED" /app/node_modules 2>/dev/null || true
 | |
|     fi
 | |
|   fi
 | |
|   # ถึงจะ symlink ไม่ได้ เราก็ยัง resolve ได้ผ่าน PATH/NODE_PATH
 | |
|   export PATH="$BAKED/.bin:$PATH"
 | |
|   export NODE_PATH="$BAKED${NODE_PATH:+:$NODE_PATH}"
 | |
| fi
 | |
| 
 | |
| # ===== 3) ให้แน่ใจว่า /app/node_modules มีอยู่ และพยายาม set owner (best-effort) =====
 | |
| mkdir -p /app/node_modules 2>/dev/null || true
 | |
| chown -R "$(id -u)":"$(id -g)" /app/node_modules 2>/dev/null || true
 | |
| 
 | |
| # ===== 4) ถ้าไม่มี nodemon เลย → ติดตั้ง dev deps แบบ fallback =====
 | |
| if ! command -v nodemon >/dev/null 2>&1 && [ ! -x /app/node_modules/.bin/nodemon ]; then
 | |
|   echo "[start-dev] nodemon not found; installing dev deps locally..."
 | |
|   npm ci || npm install
 | |
| fi
 | |
| 
 | |
| # ===== 5) Start dev server (inspect เปิดไว้บน 9229) =====
 | |
| echo "[start-dev] Starting dev server (inspect 0.0.0.0:9229, PORT=$PORT)"
 | |
| NODEMON_BIN="$(command -v nodemon || echo npx nodemon)"
 | |
| exec sh -lc "$NODEMON_BIN --legacy-watch --watch src --ext js,json,ts --exec 'node --enable-source-maps src/index.js' --inspect=0.0.0.0:9229"
 |