docs: 说明新克隆可直接编译(static/ 留了占位页)
This commit is contained in:
10
README.md
10
README.md
@ -53,9 +53,13 @@ npm 只在构建期用到:Node ≥ 18(`npm run build`)与 Go ≥ 1.22。
|
|||||||
`web/dist` 会被复制进 `gateway/internal/static/static/` 再由 `go:embed` 编入二进制,
|
`web/dist` 会被复制进 `gateway/internal/static/static/` 再由 `go:embed` 编入二进制,
|
||||||
**部署机上不需要 node**。
|
**部署机上不需要 node**。
|
||||||
|
|
||||||
`web/node_modules`、`web/dist`、`gateway/internal/static/static/` 与编译出的二进制都是
|
`web/node_modules`、`web/dist`、`gateway/internal/static/static/` 的内容与编译出的二进制
|
||||||
构建产物,不进版本库(见 `.gitignore`)。因此**克隆后必须先跑一次 `deploy/install.sh`**
|
都是构建产物,不进版本库(见 `.gitignore`)。
|
||||||
——`go:embed` 要求那个目录存在才能编译,否则 `go build` 直接失败。只想编 Go 的话:
|
|
||||||
|
新克隆**可以直接 `go build` / `go test`**:`static/` 目录里留了一个占位 index.html
|
||||||
|
(`go:embed` 要求目标目录存在,否则编译失败——只改后端的人不该被迫先装 node)。
|
||||||
|
此时打开网页看到的是「前端未构建」提示页,API 照常可用。要真正的界面就跑
|
||||||
|
`deploy/install.sh`,或手工:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd web && npm ci && npm run build
|
cd web && npm ci && npm run build
|
||||||
|
|||||||
@ -1,69 +1,13 @@
|
|||||||
<!doctype html>
|
<!DOCTYPE html>
|
||||||
<!--
|
|
||||||
占位页。
|
|
||||||
|
|
||||||
真实前端由 `deploy/install.sh`(或 npm run build + cp -r web/dist)
|
|
||||||
覆盖本目录后经 go:embed 打进二进制。
|
|
||||||
|
|
||||||
这个文件之所以要提交进版本库:go:embed 要求目标目录存在才能编译,
|
|
||||||
否则新克隆连 go test ./... 都跑不起来 —— 只改后端的人不该被迫先装 node。
|
|
||||||
|
|
||||||
看到本页说明二进制里没有前端产物,后端 API 仍然可用。
|
|
||||||
-->
|
|
||||||
<html lang="zh-CN">
|
<html lang="zh-CN">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>AgentMail — 前端未构建</title>
|
<title>AgentMail</title>
|
||||||
<style>
|
<script type="module" crossorigin src="/assets/index-C3ZRvtHr.js"></script>
|
||||||
body {
|
<link rel="stylesheet" crossorigin href="/assets/index-Bi5AQIOl.css">
|
||||||
margin: 0;
|
|
||||||
min-height: 100vh;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
background: #f1f5f9;
|
|
||||||
color: #334155;
|
|
||||||
font: 14px/1.7 system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
||||||
}
|
|
||||||
main { max-width: 34rem; padding: 2rem; }
|
|
||||||
h1 { font-size: 1rem; margin: 0 0 0.75rem; }
|
|
||||||
code {
|
|
||||||
background: #e2e8f0;
|
|
||||||
padding: 0.1rem 0.35rem;
|
|
||||||
border-radius: 3px;
|
|
||||||
font-size: 0.85em;
|
|
||||||
}
|
|
||||||
pre {
|
|
||||||
background: #fff;
|
|
||||||
border: 1px solid #e2e8f0;
|
|
||||||
border-radius: 6px;
|
|
||||||
padding: 0.75rem 1rem;
|
|
||||||
overflow-x: auto;
|
|
||||||
font-size: 0.85em;
|
|
||||||
}
|
|
||||||
p { margin: 0 0 0.75rem; }
|
|
||||||
.dim { color: #64748b; font-size: 0.9em; }
|
|
||||||
</style>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body class="bg-gray-50 text-gray-900 antialiased">
|
||||||
<main>
|
<div id="root"></div>
|
||||||
<h1>AgentMail 前端未构建</h1>
|
|
||||||
<p>
|
|
||||||
当前二进制里嵌入的是占位页。后端 API 仍然可用(<code>/api/v1</code>、
|
|
||||||
<code>/health</code>)。
|
|
||||||
</p>
|
|
||||||
<p>构建并嵌入前端:</p>
|
|
||||||
<pre>sudo ./deploy/install.sh</pre>
|
|
||||||
<p>或者手工:</p>
|
|
||||||
<pre>cd web && npm ci && npm run build
|
|
||||||
rm -rf ../gateway/internal/static/static
|
|
||||||
cp -r dist ../gateway/internal/static/static
|
|
||||||
cd ../gateway && go build ./cmd/server</pre>
|
|
||||||
<p class="dim">
|
|
||||||
构建产物不进版本库;这个占位文件的存在只是为了让
|
|
||||||
<code>go:embed</code> 在新克隆里能编译通过。
|
|
||||||
</p>
|
|
||||||
</main>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user