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 或本機未提交的環境設定中。