@@ -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。
|
||||
- 对接接口字段勿擅自改名映射;列表/详情直接用接口类型字段。
|
||||
Reference in New Issue
Block a user