Fields & Floors Collectors
Search every numbered sports card on eBay by print run, autograph, rookie status and price, then save searches and get an email when a new card lists.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證DW嚴選推坑專區
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
DW嚴選公開站使用 Nuxt SSG、Nuxt server routes 與 @nuxt/image。商品資料放在 content/products/*.json,公開首頁只顯示 status = "published" 的商品。 分工:測試與檢查跑在 host,dev server 跑在 Docker 容器。 啟動與管理 dev server(Docker 容器透過 Traefik 自動路由到 https://${APP_URL}/,預設 dwselect.toybox.local;環境設定放在未提交的 .env,參考 .env.example,APP_URL 為必填): pnpm dev 會委派給 ./dev.sh dev,host 端自動啟動 Docker dev container 並追 log;容器內才執行真正的 Nuxt dev server,避免 host 與容器共用 Vite cache 造成 chunk hash 衝突。 執行測試與檢查(host,vitest.config.ts 已載入 .env,不需手動帶 APP_URL= 前綴): 公開內容 API 與圖片由 Nuxt server routes 與 @nuxt/image 即時提供,dev 不需手動重建 artifacts:檢視完整 README ↗
DW嚴選公開站使用 Nuxt SSG、Nuxt server routes 與 @nuxt/image。商品資料放在 content/products/*.json,公開首頁只顯示 status = "published" 的商品。
分工:測試與檢查跑在 host,dev server 跑在 Docker 容器。
安裝 host 依賴(跑測試、lint、typecheck、build artifacts 用):
pnpm install
啟動與管理 dev server(Docker 容器透過 Traefik 自動路由到 https://${APP_URL}/,預設 dwselect.toybox.local;環境設定放在未提交的 .env,參考 .env.example,APP_URL 為必填):
./dev.sh start # 啟動容器(NUXT_MODE=dev 跑含 HMR 的 dev server)
./dev.sh install # package.json 變更後同步容器內依賴
./dev.sh logs # 看 Nuxt log
./dev.sh status # 看容器狀態
pnpm dev 會委派給 ./dev.sh dev,host 端自動啟動 Docker dev container 並追 log;容器內才執行真正的 Nuxt dev server,避免 host 與容器共用 Vite cache 造成 chunk hash 衝突。
執行測試與檢查(host,vitest.config.ts 已載入 .env,不需手動帶 APP_URL= 前綴):
pnpm test
pnpm lint
pnpm typecheck
公開內容 API 與圖片由 Nuxt server routes 與 @nuxt/image 即時提供,dev 不需手動重建 artifacts:
GET /api/content.json:Nuxt server route,從 content/ 即時產生 published products/guides/links/taxonomy/navigation payload。GET /search-index.json:Nuxt server route,產生 client MiniSearch 需要的 payload。@nuxt/image(<NuxtImg format="webp"> + IPX,source dir 指向 content/)。dev 即時最佳化來源圖片,不需先跑 build:content-images。本機日常不需要直接跑 pnpm generate:dev mode 走 HMR;build mode 只在 Docker app service 啟動時由 container PID 1 執行一次 generate,接著進入 preview。若要本機啟動 build preview,請以 NUXT_MODE=build ./dev.sh restart 重建 service(./dev.sh restart 在有設定 NUXT_MODE 時會 --force-recreate 並套用該 mode;未設定時則為輕量 docker compose restart,不套用新的 NUXT_MODE)。CI 需要直接產 static artifact 時,會明確設定 DWSELECT_ALLOW_HOST_GENERATE=1 再跑 pnpm generate。
容器 entrypoint 以 root 起步時,會把 bind-mount 的 .nuxt/.output/node_modules chown 給 container 內的 node 使用者(uid 1000)後再降權。這隱含假設 host 操作者的 uid 為 1000;若你的 host 或 CI 以非 1000 uid 跑 build mode,工作樹的 owner 會被改成 1000,host 端清除這些目錄時可能需要 sudo。
build mode 會產生 discovery 檔(sitemap/rss/robots/llms)、檢查 published content 的本地圖片來源是否存在,接著 prerender 頁面與 /api/content.json、/search-index.json 到 .output/public,輸出頁面實際使用的 optimized images 到 .output/public/_ipx。production 不需 server runtime。build:content-images、build:search-index、build:public-artifacts 降為 legacy CLI,已不是 dev/generate 的必要步驟。
public/api/content.json、public/search-index.json、public/images/** 改由上述流程產生,已不再進 Git;正式 static output 以 pnpm generate 的 .output/public 為準。
Google Sheets TSV 只作為 legacy migration input 或參考來源,不應在公開站 client/runtime fetch。
原 Google Sheets TSV importer(scripts/legacy/migrate-google-sheet-products.ts)已移除——它會產生含 CJK 的 slug,與 content id 強制 ASCII kebab(ADR-11)的 schema 不相容;cutover 早已完成,公開內容以 Git-backed content/products/*.json、content/guides/*.json、content/links/*.json 與 taxonomy files 為 SSOT。
如需追溯 cutover 流程,可參考一次性 content domain migration script:
node scripts/legacy/migrate-content-domain-taxonomy.ts
產生靜態輸出:
pnpm generate
輸出位置是 .output/public。
正式站部署由 GitHub Actions direct upload 到 Cloudflare Pages。push 到 master 會先執行 pnpm test、pnpm lint、pnpm typecheck 與 pnpm generate,全部通過後才部署;pull request 只跑驗證,不會部署。
dwselect.output/publichttps://dwselect.applepig.net/CLOUDFLARE_ACCOUNT_ID、CLOUDFLARE_API_TOKEN首次外部設定時,需要在 Cloudflare Pages 設定 custom domain dwselect.applepig.net。若 applepig.net 不在同一個 Cloudflare 帳號的 DNS,請在該 DNS zone 新增 CNAME,指向 dwselect.pages.dev。
不要把 Cloudflare Account ID、API token 或其他 token value 寫進 repo;token 只應存放在 GitHub Actions secrets 或本機未提交的環境設定中。