Initial commit

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
谢宇宁
2026-10-26 17:51:31 +07:00
co-authored by Claude Opus 5.5
commit 61d0a11dfa
371 changed files with 35836 additions and 0 deletions
+113
View File
@@ -0,0 +1,113 @@
# jha-1046-hjsq-web
海角社区 H5 / Web(Next.js 16 · React 19 · pnpm)。
## 环境要求
- Node.js `>= 20.9`(打包 Linux sharp 推荐 **22**,npm `>= 10.9.2`)
- pnpm `10+`
- 本机 SSH 私钥(默认 `~/.ssh/id_ed25519`),需已加入对应服务器 `authorized_keys`
## 本地开发
```bash
pnpm install
pnpm dev # development.env
pnpm dev:test # test.env
```
浏览器打开 [http://localhost:26122](http://localhost:26122)。
常用命令:
| 命令 | 说明 |
|------|------|
| `pnpm lint` | ESLint |
| `pnpm build` | 正式环境构建 |
| `pnpm build:test` | 测试环境构建 |
## 环境配置
配置文件在 `config/`(可另加 `*.local.env`,勿提交密钥):
| 文件 | 用途 |
|------|------|
| `config/development.env` | 本地开发 |
| `config/test.env` | 测试构建 / 测试服 |
| `config/production.env` | 正式构建 / 正式服 |
关键变量示例:`API_PROXY_TARGET` / `NEXT_PUBLIC_API_BASE_URL`、`PORT`、`NEXT_PUBLIC_SITE_URL`、`NEXT_PUBLIC_GTAG_ID`、`NEXT_PUBLIC_TRACKER_APP_ID`。
## 打包与部署
产物统一为仓库根目录的 **`web_hjsq_h5.tar.gz`**(及 `web_hjsq_h5.md5`)。
流程:`build` → standalone(`start.mjs`)→ 补 Linux sharp → `tar.gz` → `scp` → 远程更新脚本。
### 测试服
默认:`root@172.104.181.99:22889` → `/server/web_hjsq/h5`,远程执行 `run.sh`;应用端口 **26122**(`config/test.env`)。
```bash
pnpm pack:gz:test # 打包并推送(等同 pnpm deploy:test)
pnpm pack:gz:test:only # 只打包,不上传
```
等价远程步骤:
```bash
scp -P 22889 web_hjsq_h5.tar.gz root@172.104.181.99:/server/web_hjsq/h5
ssh -p 22889 root@172.104.181.99 "cd /server/web_hjsq/h5 && bash run.sh"
```
可选环境变量:`DEPLOY_TEST_HOST`、`DEPLOY_TEST_DIR`、`DEPLOY_TEST_REMOTE_SCRIPT`、`DEPLOY_SSH_IDENTITY`、`DEPLOY_SCP_PORT`、`DEPLOY_SSH_PORT`。
### 正式服
默认:`server@34.92.204.175:22889` → `/home/server/web_hjsq/h5`,远程执行 `rsupdate.sh`。
```bash
pnpm pack:gz # 打包并推送(等同 pnpm deploy:prod)
pnpm pack:gz:only # 只打包,不上传(等同 pnpm package:prod)
```
等价远程步骤:
```bash
scp -P 22889 web_hjsq_h5.tar.gz server@34.92.204.175:/home/server/web_hjsq/h5
ssh -p 22889 server@34.92.204.175 "bash /home/server/web_hjsq/h5/rsupdate.sh"
```
可选环境变量:`DEPLOY_JUMP_HOST`、`DEPLOY_JUMP_DIR`、`DEPLOY_REMOTE_SCRIPT`、`DEPLOY_SSH_IDENTITY`、`DEPLOY_SCP_PORT`、`DEPLOY_SSH_PORT`、`DEPLOY_TARGET_ARCH`、`DEPLOY_TARGET_LIBC`。
### 服务器启动注意
Standalone **必须**用包内入口,不要 `next start`:
```bash
node start.mjs
# 或
pm2 start ecosystem.config.cjs
```
缺少 `.next/BUILD_ID` 时会出现 `production-start-no-build-id`。测试构建本地目录仍是 `.next-test`,但打进 `web_hjsq_h5.tar.gz` 后会规范为 `.next`。若解压报 `File exists`(pnpm 软链冲突),先清理旧 `node_modules` 再跑更新脚本。
## 目录速览
```
config/ # 各环境 env
scripts/
next-env.ts # 按环境跑 next
package-standalone.ts # 整理 standalone + start.mjs
prepare-production-runtime.ts # 补 Linux sharp
package-prod.sh # 正式一键打包/推送
package-test.sh # 测试一键打包/推送
deploy_prod.sh / deploy_test.sh
src/ # 应用代码
```
## 约定(简要)
- 接口图片展示走 `DecryptedImage` / 解密链路,勿裸用接口 URL。
- 带 `slug` 的资源路由优先用 `slug`,不要用数字 id。
- 对接接口字段勿擅自改名映射;列表/详情直接用接口类型字段。