Skip to content

Remove CDN from repo#232

Merged
mirumodapon merged 4 commits into
mainfrom
remove-cdn-from-repo
May 31, 2026
Merged

Remove CDN from repo#232
mirumodapon merged 4 commits into
mainfrom
remove-cdn-from-repo

Conversation

@pan93412

Copy link
Copy Markdown
Contributor
  • refactor: download assets to this repository
  • chore: commit assets

Copilot AI review requested due to automatic review settings May 20, 2026 13:45
@pan93412 pan93412 self-assigned this May 20, 2026
@vercel

vercel Bot commented May 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
2025 Canceled Canceled May 30, 2026 10:34am

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes reliance on an external Google Drive CDN by switching image URLs in loaders to point at locally committed WebP assets, and adds a pre-build script to download/convert those assets from Google Drive.

Changes:

  • Added scripts/assets-download.ts to download Google Drive images referenced in Sheets and convert them to WebP for local hosting.
  • Updated loaders to return local /assets/drive/{id}.webp paths (prefixed with /${conference.year}) instead of CDN/thumbnail URLs.
  • Added sharp dependency and an assets:download script entry.

Reviewed changes

Copilot reviewed 7 out of 122 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
scripts/assets-download.ts New asset download + WebP conversion pipeline (Google Sheets → Drive → local assets).
loaders/utils.ts Replaces CDN URL construction with Drive ID extraction + local asset path mapping.
loaders/sponsor.data.ts Switches sponsor image mapping to local asset paths (no async preload).
loaders/sponsor-news.data.ts Switches sponsor-news images to local asset paths.
loaders/community.data.ts Switches community images from Drive thumbnails to local asset paths.
package.json Adds assets:download script and sharp dependency; bumps Node engine.
pnpm-lock.yaml Locks sharp and related transitive dependencies.
.env.example Removes obsolete DRIVE_IMAGE_CDN env var.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread scripts/assets-download.ts Outdated
Comment thread scripts/assets-download.ts
Comment thread package.json
…v vars

- Header comment now points at content/public/assets/drive/, matching the
  actual OUTPUT_DIR.
- main() now lists every missing VITE_* env var instead of only checking
  SHEET_ID and API_KEY, so missing sheet names fail loudly upfront rather
  than as an undefined sheet name in the Sheets API response.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@rileychh

Copy link
Copy Markdown
Member

Google Drive 圖片不需要下載到這吧?目標不是移除 Bunny 而已嗎?

@pan93412

pan93412 commented May 22, 2026

Copy link
Copy Markdown
Contributor Author

Google Drive 圖片不需要下載到這吧?目標不是移除 Bunny 而已嗎?

  1. Google Drive 不能直連,所以必須下載到 assets 目錄上。VitePress 不能以檔案的形式儲存 assets,若直接全量以 Base64 編碼的形式存在 JS bundle 裡面,則會發生 Optimize session page size and LCP #176 提出的「bundle 過大」的情況。因此,這裡才會採取 2 階段(先下載到 assets,然後 VitePress 再引用)的形式。
  2. 這裡的圖片有經過 WebP 壓縮,重複壓縮挺吃 CI 時間(無論是 Quality Checks、Vercel Preview 還是最終的 GitHub Pages 部署)的。這個比較偏向 Git 儲存空間和 CI 時間的 trade-off,考慮到 COSCUP/2025 已經是封存狀態,圖片不會增減,我認為存在 Git Repository 上沒有什麼太大的問題。
  3. 另外,有些 Google Drive 圖片的原始連結已經連不上了(比如 ExpressVPN 和 TapPay 的)。下載回來備份確實可以提升編譯的可重現性。

@mirumodapon

Copy link
Copy Markdown
Contributor

preview 圖片跑不出來誒

@pan93412

Copy link
Copy Markdown
Contributor Author

preview 圖片跑不出來誒

看起來是因為 Vercel 沒有 base URL,但 GitHub Pages 和 Local 測試上正常 🤔

我重新用 Dockerfile 寫一個有正確 routing rules 的版本,Vercel 的我沒看太懂怎麼改 🥲

@pan93412

pan93412 commented May 30, 2026

Copy link
Copy Markdown
Contributor Author

@mirumodapon 我重新 build 了,可以測試看看~

https://coscup-2025-preview.zeabur.app/2025/sponsor/

CleanShot 2026-05-30 at 19 04 38@2x

Dockerfile:

FROM node:24.6-alpine AS builder

WORKDIR /app

ENV HUSKY=0

RUN corepack enable && corepack prepare pnpm@10.18.0 --activate

RUN --mount=type=cache,target=/root/.local/share/pnpm/store \
    --mount=type=bind,source=package.json,target=package.json \
    --mount=type=bind,source=pnpm-lock.yaml,target=pnpm-lock.yaml \
    pnpm install --frozen-lockfile

COPY . .

RUN pnpm build

FROM zeabur/caddy-static:2.0

COPY --from=builder /app/.vitepress/dist /usr/share/caddy/2025

RUN cat <<'EOF' > /usr/share/caddy/_redirects
/  /2025/  301
EOF

RUN addgroup -S app && adduser -S -G app app \
    && chown -R app:app /usr/share/caddy

USER app

EXPOSE 8080

@mirumodapon mirumodapon merged commit 10cd9f3 into main May 31, 2026
2 of 3 checks passed
@mirumodapon mirumodapon deleted the remove-cdn-from-repo branch May 31, 2026 07:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants