mirror of
https://github.com/eternity4719/HowToLiveBetter.git
synced 2026-10-28 11:44:50 +08:00
工作流改成一次出 EPUB/PDF/离线 HTML 三样挂到同一 Release;README 加下载入口和「自己跑一份」
This commit is contained in:
1 parent
260bdde2df
commit
c64ac9f8d2
3 files changed
+82
-18
No files matched your search
+49
-15
@@ -1,35 +1,45 @@
|
||||
# 正文一改就重新生成 EPUB,挂到固定的 Release「epub-latest」上,下载链接不变:
|
||||
# https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.epub
|
||||
# 正文一改就重新生成三样,挂到固定的 Release「epub-latest」上,下载链接不变:
|
||||
# EPUB https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.epub
|
||||
# PDF https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.pdf
|
||||
# 离线单文件 https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.html
|
||||
# PR 只生成并校验,不发布,产物在 Actions 页面的 artifact 里。
|
||||
name: EPUB
|
||||
name: 电子书
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- README.md
|
||||
- index.html
|
||||
- og.png
|
||||
- ads/**
|
||||
- book/**
|
||||
- docs/*.md
|
||||
- tools/epub/**
|
||||
- .github/workflows/epub.yml
|
||||
- tools/**
|
||||
- .github/workflows/book.yml
|
||||
pull_request:
|
||||
paths:
|
||||
- README.md
|
||||
- index.html
|
||||
- og.png
|
||||
- ads/**
|
||||
- book/**
|
||||
- docs/*.md
|
||||
- tools/epub/**
|
||||
- .github/workflows/epub.yml
|
||||
- tools/**
|
||||
- .github/workflows/book.yml
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
concurrency:
|
||||
group: epub-${{ github.ref }}
|
||||
group: book-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
PANDOC_VERSION: '3.11'
|
||||
TYPST_VERSION: '0.15.1'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -45,7 +55,25 @@ jobs:
|
||||
- run: npm ci
|
||||
working-directory: tools/epub
|
||||
|
||||
- run: node tools/epub/build.mjs
|
||||
- name: EPUB
|
||||
run: node tools/epub/build.mjs
|
||||
|
||||
- name: 离线单文件 HTML
|
||||
run: node tools/offline/build.mjs
|
||||
|
||||
- name: 装 pandoc、typst 和中文字体
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y --no-install-recommends fonts-noto-cjk
|
||||
curl -sSL "https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-linux-amd64.tar.gz" | tar xz
|
||||
curl -sSL "https://github.com/typst/typst/releases/download/v${TYPST_VERSION}/typst-x86_64-unknown-linux-musl.tar.xz" | tar xJ
|
||||
echo "$PWD/pandoc-${PANDOC_VERSION}/bin" >> "$GITHUB_PATH"
|
||||
echo "$PWD/typst-x86_64-unknown-linux-musl" >> "$GITHUB_PATH"
|
||||
|
||||
- name: PDF
|
||||
run: |
|
||||
typst fonts | grep -i -E 'noto (serif|sans) cjk' || echo '没找到 Noto CJK,PDF 会退到别的字体,检查 fonts-noto-cjk 这一步'
|
||||
node tools/pdf/build.mjs
|
||||
|
||||
- uses: actions/setup-java@v4
|
||||
with:
|
||||
@@ -60,8 +88,11 @@ jobs:
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: HowToLiveBetter.epub
|
||||
path: dist/HowToLiveBetter.epub
|
||||
name: HowToLiveBetter
|
||||
path: |
|
||||
dist/HowToLiveBetter.epub
|
||||
dist/HowToLiveBetter.pdf
|
||||
dist/HowToLiveBetter.html
|
||||
|
||||
- name: 发布到 Release epub-latest
|
||||
if: github.event_name != 'pull_request'
|
||||
@@ -70,10 +101,13 @@ jobs:
|
||||
run: |
|
||||
git tag -f epub-latest
|
||||
git push -f origin epub-latest
|
||||
notes="正文提交 ${GITHUB_SHA::7},生成于 $(date -u +%Y-%m-%d) UTC。正文每次更新后自动重新生成,下载链接固定不变。"
|
||||
notes="正文提交 ${GITHUB_SHA::7},生成于 $(date -u +%Y-%m-%d) UTC。EPUB、PDF、离线单文件 HTML 三样,正文每次更新后自动重新生成,下载链接固定不变。"
|
||||
if gh release view epub-latest >/dev/null 2>&1; then
|
||||
gh release edit epub-latest --notes "$notes"
|
||||
gh release edit epub-latest --title "电子书(EPUB / PDF / 离线 HTML,自动更新)" --notes "$notes"
|
||||
else
|
||||
gh release create epub-latest --title "电子书(EPUB,自动更新)" --notes "$notes" --latest=false
|
||||
gh release create epub-latest --title "电子书(EPUB / PDF / 离线 HTML,自动更新)" --notes "$notes" --latest=false
|
||||
fi
|
||||
gh release upload epub-latest dist/HowToLiveBetter.epub --clobber
|
||||
gh release upload epub-latest \
|
||||
dist/HowToLiveBetter.epub \
|
||||
dist/HowToLiveBetter.pdf \
|
||||
dist/HowToLiveBetter.html --clobber
|
||||
@@ -49,7 +49,10 @@
|
||||
|
||||
正文按节拆成 `book/01-*.md` … `book/31-*.md`(2026-09-08 拆的,原来单文件 531 KB,超过 GitHub 渲染 Markdown 的 512 KB 上限,后面的节显示不出来也跳不了锚点)。README 只留导读、术语表和目录,新增或修改条目改对应的 book 文件;检索页 index.html 先读 README 拿目录里的文件列表,再并发读这些文件。每节文件第一行是回总目录的链接,第二行空行,第三行是 `# N. 节名`。
|
||||
|
||||
电子书:`tools/epub/build.mjs`(只依赖 marked,zip 自己打)把 README 的导读、术语表、目录 + book/ 全部节 + docs/ 四篇长文打成 EPUB 3;文件清单从 README 的目录和长文链接里取,新增节或长文不用改脚本。`.github/workflows/epub.yml` 在 main 上正文改动后自动生成、跑 epubcheck、挂到固定 Release `epub-latest`(下载链接不变,README 里引用的就是它);PR 只生成校验不发布。本地 `cd tools/epub && npm ci && npm run build`,产物在 `dist/`(已 gitignore)。**EPUB 文件本身不入库**,正文几乎天天改,提交二进制只会过时和撑大历史(2026-09-18 issue #12 定的方案)。
|
||||
电子版三样,全由 `.github/workflows/book.yml` 在 main 上正文改动后自动生成,挂到固定 Release `epub-latest`(下载链接不变,README 引用的就是它),PR 只生成校验不发布;产物都进 `dist/`(已 gitignore)。**产物本身不入库**,正文几乎天天改,提交二进制只会过时和撑大历史(2026-09-18 issue #12 定的方案)。README 的结构解析和文件清单收在 `tools/lib/book.mjs`,三套构建共用,新增节或长文不用改脚本。
|
||||
- EPUB:`tools/epub/build.mjs`(只依赖 marked,zip 自己打),CI 里跑 epubcheck。本地 `cd tools/epub && npm ci && npm run build`。
|
||||
- 离线单文件 HTML:`tools/offline/build.mjs`(零依赖)把正文内联进 index.html 的 `window.__CORPUS__`,双击就能看、离线可用;index.html 的 `init()` 认这个变量就不发请求,改 init 的取数逻辑要同时顾到这条路。
|
||||
- PDF:`tools/pdf/build.mjs` + `tools/pdf/template.typ`,pandoc 转 typst、typst 排版(A4、每节另起一页、页眉带节名、目录带页码、书签到条目级)。本地要 pandoc ≥ 3.1 和 typst ≥ 0.13,用环境变量 `PANDOC`、`TYPST` 指到可执行文件;CI 里按 workflow 顶部 env 里钉的版本下载。版面只改 template.typ。
|
||||
|
||||
1. 不要早死(外因:交通、火灾、燃气器具与用气安全、毒蘑菇、溺水、跌落、中毒、疫苗、体检筛查、心理危机(12356 与限制致死手段、自杀念头的时间尺度与未遂之后的长期结局、中毒被救回来之后的不可逆后遗症、高处坠落幸存之后的 ICU 与康复账、摘掉一个肾之后剩余肾的长期代价与卖肾者的随访结局,法律那一侧在第 9 节)、家庭应急装备、安全套与不共用针具、艾滋病的免费自愿咨询检测与窗口期、肉眼血尿等该去查的信号;装备清单长文放 docs/家庭应急装备清单.md)
|
||||
2. 不要慢慢死(烟酒、运动、睡眠、饮食、久坐——只收效应量大且证据硬的,不追求全)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
[](docs/核实记录/)
|
||||
[](LICENSE)
|
||||
|
||||
**[打开在线检索页](https://eternity4719.github.io/HowToLiveBetter/)** · [下载 EPUB 电子书](https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.epub) · [目录](#目录) · [术语表](#读懂数字术语表) · [核实记录](docs/核实记录/) · [结婚划不划算(长文)](docs/结婚划不划算.md) · [家庭应急装备清单(长文)](docs/家庭应急装备清单.md) · [遇到陌生人出事该不该停(长文)](docs/遇到陌生人出事该不该停.md) · [做平台要办哪些证(长文)](docs/做平台要办哪些证.md)
|
||||
**[打开在线检索页](https://eternity4719.github.io/HowToLiveBetter/)** · [下载 PDF](https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.pdf) · [下载 EPUB](https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.epub) · [下载离线单文件(HTML)](https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.html) · [目录](#目录) · [术语表](#读懂数字术语表) · [核实记录](docs/核实记录/) · [结婚划不划算(长文)](docs/结婚划不划算.md) · [家庭应急装备清单(长文)](docs/家庭应急装备清单.md) · [遇到陌生人出事该不该停(长文)](docs/遇到陌生人出事该不该停.md) · [做平台要办哪些证(长文)](docs/做平台要办哪些证.md)
|
||||
|
||||
其他语言:[Русский(俄语网站)](https://dlgrv.github.io/HowToLiveBetter/) · [俄语仓库](https://github.com/dlgrv/HowToLiveBetter/blob/main/README.ru.md) —— 由 [dlgrv](https://github.com/dlgrv) 维护的非官方翻译,内容以本仓库的中文原文为准。
|
||||
|
||||
@@ -67,7 +67,10 @@
|
||||
- **不用全做**:这是一份按性价比排好的备选单,不是任务清单。挑走一两条就算数,剩下的放着,需要时再回来查。「说着容易做着难」这个评价是对的——作者自己也没做到其中大部分,写下来是为了要用的时候找得到。想挑省力的,看下面「只想看最值得做的」那条。
|
||||
- **想按条件筛**:打开[在线检索页](https://eternity4719.github.io/HowToLiveBetter/),可以按关键词、章节、证据等级,以及「花不花钱、花多少时间、要不要毅力」三个成本维度组合筛选。数据直接读 book/ 下的正文,改正文即改检索页。
|
||||
- **想按顺序读**:每节内的条目按性价比从高到低排列,从每节前几条开始看就行。
|
||||
- **想在 Kindle 或其他阅读器上读**:下载 [EPUB 电子书](https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.epub),正文每次更新后自动重新生成,链接不变;Kindle 用 Send to Kindle 发过去即可。
|
||||
- **想离线看、想发给别人**:下载 [离线单文件 HTML](https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.html),整本书连同检索和筛选都在这一个文件里,双击就开,不用服务器也不用联网,微信里也能直接传。
|
||||
- **想打印或在手机上翻**:下载 [PDF](https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.pdf),A4 排版、两百多页,带目录页码和书签,每节另起一页。
|
||||
- **想在 Kindle 或其他阅读器上读**:下载 [EPUB 电子书](https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.epub),Kindle 用 Send to Kindle 发过去即可。
|
||||
- **三样都是正文每次更新后自动重新生成的**,下载链接固定不变;转发出去的那一份不会跟着更新,以在线版为准。
|
||||
- **看不懂那串数字**:每条都有一行「说人话」,把「收益」栏里的风险比、置信区间翻成「同期死亡的概率低约两成」「拘留几日、罚多少钱」这类日常说法,只用原文已有的事实,不引入新数字。只看这一行就够做决定;「收益」栏保留全部原始数字和置信区间,供你自己核。
|
||||
- **只想看结论最硬的**:在检索页里勾选证据等级 A,只留下有具体数字、来自荟萃分析或大型试验的 347 条。
|
||||
- **只想看最值得做的**:勾选性价比「极高」,得到 100 条既不花钱、不花时间、不需要毅力,收益又落在最大一档的条目。再叠加一个「换回什么」,就是该口径下的优先清单。
|
||||
@@ -85,6 +88,30 @@
|
||||
- 备注:争议。肾功能不全、正在吃保钾利尿剂的人不要用。另有一项覆盖 181 个国家的生态学研究发现钠摄入越高的国家预期寿命反而越长、总死亡率反而越低(β=−131 例/克每日钠摄入,R²=0.60,P<0.001),作者据此反对把钠当作缩短寿命的元凶;但生态学研究比的是国家而不是人,富国吃盐多也活得久,无法排除经济水平这个混杂,证据等级低于上面那项随机对照试验。来源:Messerli FH, Hofstetter L, Syrogiannouli L, et al. (2021). Sodium intake, life expectancy, and all-cause mortality. European Heart Journal, 42(21), 2103-2112. <https://doi.org/10.1093/eurheartj/ehaa947>
|
||||
```
|
||||
|
||||
## 自己跑一份
|
||||
|
||||
多数人用不着部署:[在线检索页](https://eternity4719.github.io/HowToLiveBetter/)是现成的,要离线就下[离线单文件 HTML](https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.html),双击就开。
|
||||
|
||||
真要在自己电脑或服务器上跑:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/eternity4719/HowToLiveBetter.git
|
||||
cd HowToLiveBetter
|
||||
python -m http.server 8000
|
||||
```
|
||||
|
||||
然后浏览器开 `http://localhost:8000/`。检索页是纯静态的,`README.md` 和 `book/` 就是它的数据,没有后端、没有数据库、不用装依赖;把整个目录丢给任何静态服务器(Nginx、GitHub Pages、对象存储)效果一样。注意 `index.html` 必须经 http 打开,直接双击本地文件会空白——浏览器不许网页读本地文件,那种场景请用上面的离线单文件版。
|
||||
|
||||
想自己生成三样电子版(平时用不着,Release 里的就是自动生成的):
|
||||
|
||||
```bash
|
||||
cd tools/epub && npm ci && npm run build # EPUB
|
||||
node tools/offline/build.mjs # 离线单文件 HTML
|
||||
node tools/pdf/build.mjs # PDF,另需 pandoc ≥ 3.1 和 typst ≥ 0.13
|
||||
```
|
||||
|
||||
产物都在 `dist/`。
|
||||
|
||||
## 四种资源
|
||||
|
||||
本指南优化的不只是寿命,而是四种资源:
|
||||
|
||||
Reference in new issue
Block a user