[{"data":1,"prerenderedAt":964},["ShallowReactive",2],{"chapter-post-project-replication-guide-02-local-dev-and-nuxt-content":3},{"chapter":4,"entry":73,"prev":476,"next":744},{"id":5,"title":6,"body":7,"category":55,"cover":52,"date":56,"description":57,"draft":58,"extension":59,"lang":60,"meta":61,"navigation":62,"path":63,"seo":64,"slug":65,"stem":66,"tags":67,"toc":62,"updated":56,"__hash__":72},"chapters/chapters/project-replication-guide.md","零基础完整复刻：Cloudflare 博客项目全流程",{"type":8,"value":9,"toc":51},"minimark",[10,14,17,30,33,45,48],[11,12,13],"p",{},"这个章节是你当前博客项目的“完整复刻手册”。",[11,15,16],{},"目标读者：",[18,19,20,24,27],"ul",{},[21,22,23],"li",{},"没有代码基础",[21,25,26],{},"第一次接触 GitHub、Cloudflare、Nuxt、Decap CMS",[21,28,29],{},"希望照着文档一步步做，最终得到与你当前项目一致的结果",[11,31,32],{},"学习方式建议：",[34,35,36,39,42],"ol",{},[21,37,38],{},"严格按顺序学习，不要跳步骤",[21,40,41],{},"每做完一节就执行“本节验收”",[21,43,44],{},"发现报错先看“常见问题”再继续",[11,46,47],{},"你可以直接从下面目录开始：",[49,50],"chapter-children",{},{"title":52,"searchDepth":53,"depth":53,"links":54},"",2,[],"Chapter","2026-02-14","面向零基础读者的完整项目复刻章节：从准备账号、搭建 Nuxt，到 Pages、Tunnel、CMS、评论、夜间模式与排障。",false,"md","zh-CN",{},true,"/chapters/project-replication-guide",{"title":6,"description":57},"project-replication-guide","chapters/project-replication-guide",[68,69,70,71],"复刻教程","Cloudflare","Nuxt","零基础","T31gU2a4Q3CvJ3Z2B2jyDvX4BtLMmICHnwzpIIudkao",{"id":74,"title":75,"body":76,"category":465,"chapterSlug":65,"cover":52,"date":56,"description":466,"draft":58,"extension":59,"lang":60,"legacySlugs":467,"meta":468,"navigation":62,"order":53,"path":469,"seo":470,"slug":471,"stem":472,"tags":473,"toc":62,"updated":56,"__hash__":475},"chapterPosts/chapter-posts/project-replication-guide/02-local-dev-and-nuxt-content.md","第 2 节：本地跑起来（Nuxt + Content + 环境变量）",{"type":8,"value":77,"toc":458},[78,83,86,130,137,140,151,155,161,244,247,267,270,284,288,294,297,336,339,347,350,354,360,380,387,390,407,411,414,437,440,454],[79,80,82],"h2",{"id":81},"_21-安装依赖并启动项目","2.1 安装依赖并启动项目",[11,84,85],{},"在项目根目录执行：",[87,88,92],"pre",{"className":89,"code":90,"language":91,"meta":52,"style":52},"language-bash shiki shiki-themes github-light github-dark","npm install\ncp .env.example .env\nnpm run dev\n","bash",[93,94,95,108,119],"code",{"__ignoreMap":52},[96,97,100,104],"span",{"class":98,"line":99},"line",1,[96,101,103],{"class":102},"sScJk","npm",[96,105,107],{"class":106},"sZZnC"," install\n",[96,109,110,113,116],{"class":98,"line":53},[96,111,112],{"class":102},"cp",[96,114,115],{"class":106}," .env.example",[96,117,118],{"class":106}," .env\n",[96,120,122,124,127],{"class":98,"line":121},3,[96,123,103],{"class":102},[96,125,126],{"class":106}," run",[96,128,129],{"class":106}," dev\n",[11,131,132,133,136],{},"然后打开浏览器：",[93,134,135],{},"http://localhost:3000","。",[11,138,139],{},"这一步成功，代表：",[34,141,142,145,148],{},[21,143,144],{},"依赖安装正常",[21,146,147],{},"Nuxt 开发服务器可运行",[21,149,150],{},"项目基础代码可读",[79,152,154],{"id":153},"_22-先理解脚本你之后会一直用","2.2 先理解脚本（你之后会一直用）",[11,156,157,160],{},[93,158,159],{},"package.json"," 里的脚本：",[87,162,166],{"className":163,"code":164,"language":165,"meta":52,"style":52},"language-json shiki shiki-themes github-light github-dark","{\n  \"dev\": \"nuxt dev\",\n  \"build\": \"nuxt build\",\n  \"generate\": \"nuxt generate\",\n  \"preview\": \"nuxt preview\",\n  \"check\": \"nuxt typecheck\"\n}\n","json",[93,167,168,174,189,201,214,227,238],{"__ignoreMap":52},[96,169,170],{"class":98,"line":99},[96,171,173],{"class":172},"sVt8B","{\n",[96,175,176,180,183,186],{"class":98,"line":53},[96,177,179],{"class":178},"sj4cs","  \"dev\"",[96,181,182],{"class":172},": ",[96,184,185],{"class":106},"\"nuxt dev\"",[96,187,188],{"class":172},",\n",[96,190,191,194,196,199],{"class":98,"line":121},[96,192,193],{"class":178},"  \"build\"",[96,195,182],{"class":172},[96,197,198],{"class":106},"\"nuxt build\"",[96,200,188],{"class":172},[96,202,204,207,209,212],{"class":98,"line":203},4,[96,205,206],{"class":178},"  \"generate\"",[96,208,182],{"class":172},[96,210,211],{"class":106},"\"nuxt generate\"",[96,213,188],{"class":172},[96,215,217,220,222,225],{"class":98,"line":216},5,[96,218,219],{"class":178},"  \"preview\"",[96,221,182],{"class":172},[96,223,224],{"class":106},"\"nuxt preview\"",[96,226,188],{"class":172},[96,228,230,233,235],{"class":98,"line":229},6,[96,231,232],{"class":178},"  \"check\"",[96,234,182],{"class":172},[96,236,237],{"class":106},"\"nuxt typecheck\"\n",[96,239,241],{"class":98,"line":240},7,[96,242,243],{"class":172},"}\n",[11,245,246],{},"逐条解释：",[34,248,249,255,261],{},[21,250,251,254],{},[93,252,253],{},"dev","：本地开发，改代码会热更新。",[21,256,257,260],{},[93,258,259],{},"generate","：生成静态站（Cloudflare Pages 用这个）。",[21,262,263,266],{},[93,264,265],{},"check","：类型检查，防止明显代码错误。",[11,268,269],{},"你要形成习惯：",[18,271,272,278],{},[21,273,274,275],{},"每次关键改动后跑 ",[93,276,277],{},"npm run check",[21,279,280,281],{},"准备推送前跑 ",[93,282,283],{},"npm run generate",[79,285,287],{"id":286},"_23-环境变量为什么这么重要","2.3 环境变量为什么这么重要",[11,289,290,293],{},[93,291,292],{},".env"," 是项目行为总开关。",[11,295,296],{},"你项目中的关键变量：",[34,298,299,309,318,324,330],{},[21,300,301,304,305,308],{},[93,302,303],{},"SITE_URL"," / ",[93,306,307],{},"NUXT_PUBLIC_SITE_URL","：正式站地址",[21,310,311,304,314,317],{},[93,312,313],{},"PREVIEW_URL",[93,315,316],{},"NUXT_PUBLIC_PREVIEW_URL","：预览地址",[21,319,320,323],{},[93,321,322],{},"NUXT_PUBLIC_SHOW_DRAFTS","：是否显示草稿",[21,325,326,329],{},[93,327,328],{},"GISCUS_*","：评论系统配置",[21,331,332,335],{},[93,333,334],{},"CF_ACCESS_AUD","：Cloudflare Access 拓展鉴权字段",[11,337,338],{},"最常见错误：",[18,340,341,344],{},[21,342,343],{},"变量只填了 Production，没填 Preview",[21,345,346],{},"public 与非 public 混用，导致客户端拿不到值",[11,348,349],{},"你的项目已经采用“双写兼容”方式，降低此类风险。",[79,351,353],{"id":352},"_24-内容模型为什么你的文章能变成页面","2.4 内容模型：为什么你的文章能变成页面",[11,355,356,359],{},[93,357,358],{},"content.config.ts"," 定义了 3 套内容集合：",[34,361,362,368,374],{},[21,363,364,367],{},[93,365,366],{},"posts","：普通文章",[21,369,370,373],{},[93,371,372],{},"chapters","：章节父文",[21,375,376,379],{},[93,377,378],{},"chapterPosts","：章节子文章",[11,381,382,383,386],{},"系统会把 Markdown frontmatter 字段（例如 ",[93,384,385],{},"title/date/tags","）解析成可查询数据。",[11,388,389],{},"你看到的页面路由是：",[18,391,392,397,402],{},[21,393,394],{},[93,395,396],{},"/posts/:slug",[21,398,399],{},[93,400,401],{},"/chapters/:chapterSlug",[21,403,404],{},[93,405,406],{},"/chapters/:chapterSlug/:slug",[79,408,410],{"id":409},"_25-本节验收","2.5 本节验收",[11,412,413],{},"执行并确认：",[87,415,417],{"className":89,"code":416,"language":91,"meta":52,"style":52},"npm run check\nnpm run generate\n",[93,418,419,428],{"__ignoreMap":52},[96,420,421,423,425],{"class":98,"line":99},[96,422,103],{"class":102},[96,424,126],{"class":106},[96,426,427],{"class":106}," check\n",[96,429,430,432,434],{"class":98,"line":53},[96,431,103],{"class":102},[96,433,126],{"class":106},[96,435,436],{"class":106}," generate\n",[11,438,439],{},"验收标准：",[34,441,442,445,448],{},[21,443,444],{},"两条命令都通过",[21,446,447],{},"本地页面可正常打开",[21,449,450,451,453],{},"你能看懂 ",[93,452,292],{}," 每个字段大概作用",[455,456,457],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":52,"searchDepth":53,"depth":53,"links":459},[460,461,462,463,464],{"id":81,"depth":53,"text":82},{"id":153,"depth":53,"text":154},{"id":286,"depth":53,"text":287},{"id":352,"depth":53,"text":353},{"id":409,"depth":53,"text":410},"Guide","从零启动本地站点，理解 .env、内容模型、页面路由和构建脚本。",[],{},"/chapter-posts/project-replication-guide/02-local-dev-and-nuxt-content",{"title":75,"description":466},"02-local-dev-and-nuxt-content","chapter-posts/project-replication-guide/02-local-dev-and-nuxt-content",[68,70,474],"环境变量","gOmH9AS2UrLEZ73n0vFL9_RNxvaWrYWbSXr6PLbCQWI",{"id":477,"title":478,"body":479,"category":465,"chapterSlug":65,"cover":52,"date":56,"description":733,"draft":58,"extension":59,"lang":60,"legacySlugs":734,"meta":735,"navigation":62,"order":99,"path":736,"seo":737,"slug":738,"stem":739,"tags":740,"toc":62,"updated":56,"__hash__":743},"chapterPosts/chapter-posts/project-replication-guide/01-overview-and-accounts.md","第 1 节：先把地基打好（目标、账号、工具）",{"type":8,"value":480,"toc":718},[481,485,488,491,502,505,511,515,518,539,542,556,560,565,568,571,583,587,590,592,611,615,618,625,627,642,646,654,657,661,664,690,693,697,701,704,708,715],[79,482,484],{"id":483},"_11-这一整个项目到底在做什么","1.1 这一整个项目到底在做什么",[11,486,487],{},"你现在要复刻的是一个“静态主站 + 私有预览后台”的博客系统。",[11,489,490],{},"系统分工如下：",[34,492,493,496,499],{},[21,494,495],{},"公开站点：给所有访客看文章，要求稳定、快、便宜。",[21,497,498],{},"私有预览：只给你自己看草稿、后台编辑，要求安全。",[21,500,501],{},"内容管理：用可视化后台写文章，但底层仍是 Git 文件，方便版本管理和回滚。",[11,503,504],{},"一句话概括：",[506,507,508],"blockquote",{},[11,509,510],{},"主站要稳，后台要安全，内容要可追溯。",[79,512,514],{"id":513},"_12-你必须准备的账号","1.2 你必须准备的账号",[11,516,517],{},"按顺序准备下面 4 类账号：",[34,519,520,527,533,536],{},[21,521,522,523,526],{},"GitHub 账号（你已经在用：",[93,524,525],{},"adkeb","）",[21,528,529,530,526],{},"Cloudflare 账号（你已绑定域名 ",[93,531,532],{},"xuyangfly.site",[21,534,535],{},"域名（并且 DNS 在 Cloudflare 管理）",[21,537,538],{},"giscus 所需 GitHub 仓库权限（评论功能）",[11,540,541],{},"为什么必须先准备账号：",[18,543,544,547,550,553],{},[21,545,546],{},"没有 GitHub：无法做代码仓库与自动部署",[21,548,549],{},"没有 Cloudflare：无法托管 Pages、Tunnel、Access",[21,551,552],{},"没有域名：无法做正式地址与 HTTPS",[21,554,555],{},"没有仓库权限：CMS/OAuth/评论全都做不通",[79,557,559],{"id":558},"_13-你必须安装的本地工具","1.3 你必须安装的本地工具",[561,562,564],"h3",{"id":563},"git","Git",[11,566,567],{},"作用：把代码提交到 GitHub。",[11,569,570],{},"检查命令：",[87,572,574],{"className":89,"code":573,"language":91,"meta":52,"style":52},"git --version\n",[93,575,576],{"__ignoreMap":52},[96,577,578,580],{"class":98,"line":99},[96,579,563],{"class":102},[96,581,582],{"class":178}," --version\n",[561,584,586],{"id":585},"nodejs建议-20","Node.js（建议 20+）",[11,588,589],{},"作用：运行 Nuxt 项目、安装依赖。",[11,591,570],{},[87,593,595],{"className":89,"code":594,"language":91,"meta":52,"style":52},"node -v\nnpm -v\n",[93,596,597,605],{"__ignoreMap":52},[96,598,599,602],{"class":98,"line":99},[96,600,601],{"class":102},"node",[96,603,604],{"class":178}," -v\n",[96,606,607,609],{"class":98,"line":53},[96,608,103],{"class":102},[96,610,604],{"class":178},[561,612,614],{"id":613},"wranglercloudflare-cli","Wrangler（Cloudflare CLI）",[11,616,617],{},"作用：部署 Decap OAuth Worker。",[11,619,620,621,624],{},"你可以不全局安装，用 ",[93,622,623],{},"npx wrangler ..."," 临时调用。",[11,626,570],{},[87,628,630],{"className":89,"code":629,"language":91,"meta":52,"style":52},"npx wrangler --version\n",[93,631,632],{"__ignoreMap":52},[96,633,634,637,640],{"class":98,"line":99},[96,635,636],{"class":102},"npx",[96,638,639],{"class":106}," wrangler",[96,641,582],{"class":178},[79,643,645],{"id":644},"_14-你的项目目录结构你将频繁看到","1.4 你的项目目录结构（你将频繁看到）",[87,647,652],{"className":648,"code":650,"language":651,"meta":52},[649],"language-text","content/\n  posts/                  # 普通文章\n  chapters/               # 章节父文\n  chapter-posts/          # 章节子文章\npublic/admin/config.yml   # Decap CMS 配置\nops/decap-oauth/worker.js # OAuth Worker\npages/                    # 前端路由页面\nserver/routes/            # RSS/Sitemap/Search API\nassets/css/main.css       # 全局样式（含夜间模式变量）\n","text",[93,653,650],{"__ignoreMap":52},[11,655,656],{},"你现在先不用死记，后面每节会反复用到。",[79,658,660],{"id":659},"_15-本节验收你必须确认","1.5 本节验收（你必须确认）",[11,662,663],{},"请逐项确认：",[34,665,666,669,675,685],{},[21,667,668],{},"你可以登录 GitHub 和 Cloudflare。",[21,670,671,672,136],{},"你能看到仓库 ",[93,673,674],{},"adkeb/blog",[21,676,677,678,681,682,136],{},"本地能执行 ",[93,679,680],{},"git --version","、",[93,683,684],{},"node -v",[21,686,677,687,136],{},[93,688,689],{},"npx wrangler --version",[11,691,692],{},"只要这 4 项都完成，你就具备继续复刻的基础条件。",[79,694,696],{"id":695},"_16-常见问题","1.6 常见问题",[561,698,700],{"id":699},"问我不会命令行能复刻吗","问：我不会命令行，能复刻吗？",[11,702,703],{},"可以。你只需要复制命令执行，不需要理解每个参数的全部细节。",[561,705,707],{"id":706},"问我用的是-conda-base-环境会冲突吗","问：我用的是 Conda base 环境，会冲突吗？",[11,709,710,711,714],{},"不会。你当前环境已经能跑 ",[93,712,713],{},"npx wrangler","，说明链路可用。",[455,716,717],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":52,"searchDepth":53,"depth":53,"links":719},[720,721,722,727,728,729],{"id":483,"depth":53,"text":484},{"id":513,"depth":53,"text":514},{"id":558,"depth":53,"text":559,"children":723},[724,725,726],{"id":563,"depth":121,"text":564},{"id":585,"depth":121,"text":586},{"id":613,"depth":121,"text":614},{"id":644,"depth":53,"text":645},{"id":659,"depth":53,"text":660},{"id":695,"depth":53,"text":696,"children":730},[731,732],{"id":699,"depth":121,"text":700},{"id":706,"depth":121,"text":707},"你要先准备哪些账号和工具，为什么必须先做这一步，以及每个工具在项目里的职责。",[],{},"/chapter-posts/project-replication-guide/01-overview-and-accounts",{"title":478,"description":733},"01-overview-and-accounts","chapter-posts/project-replication-guide/01-overview-and-accounts",[68,741,742],"入门","准备工作","CfszBs4t3aWnlVWtnHvBt_fWCo-M-1dKC87r8KEAhh8",{"id":745,"title":746,"body":747,"category":465,"chapterSlug":65,"cover":52,"date":56,"description":953,"draft":58,"extension":59,"lang":60,"legacySlugs":954,"meta":955,"navigation":62,"order":121,"path":956,"seo":957,"slug":958,"stem":959,"tags":960,"toc":62,"updated":56,"__hash__":963},"chapterPosts/chapter-posts/project-replication-guide/03-github-and-cloudflare-pages.md","第 3 节：连接 GitHub 与 Cloudflare Pages（自动部署主链路）",{"type":8,"value":748,"toc":946},[749,753,758,761,775,778,784,787,791,794,819,823,826,845,848,857,869,873,876,882,885,894,897,905,909,915,929,932,943],[79,750,752],{"id":751},"_31-先确认代码已在-github","3.1 先确认代码已在 GitHub",[11,754,755,756,136],{},"你的目标仓库是：",[93,757,674],{},[11,759,760],{},"本地执行：",[87,762,764],{"className":89,"code":763,"language":91,"meta":52,"style":52},"git remote -v\n",[93,765,766],{"__ignoreMap":52},[96,767,768,770,773],{"class":98,"line":99},[96,769,563],{"class":102},[96,771,772],{"class":106}," remote",[96,774,604],{"class":178},[11,776,777],{},"应看到：",[87,779,782],{"className":780,"code":781,"language":651,"meta":52},[649],"origin git@github.com:adkeb/blog.git\n",[93,783,781],{"__ignoreMap":52},[11,785,786],{},"如果不是这个地址，先修正 remote 再继续。",[79,788,790],{"id":789},"_32-在-cloudflare-创建-pages-项目","3.2 在 Cloudflare 创建 Pages 项目",[11,792,793],{},"操作路径（新版控制台）：",[34,795,796,802,808,813],{},[21,797,798,799],{},"进入 ",[93,800,801],{},"Workers & Pages",[21,803,804,805],{},"选择 ",[93,806,807],{},"Import an existing Git repository",[21,809,810,811],{},"选择 GitHub 账号与仓库 ",[93,812,674],{},[21,814,815,816],{},"生产分支选 ",[93,817,818],{},"main",[79,820,822],{"id":821},"_33-构建参数必须这样填","3.3 构建参数必须这样填",[11,824,825],{},"这一项非常关键，填错就会失败：",[34,827,828,834,839],{},[21,829,830,831],{},"Framework preset：",[93,832,833],{},"Nuxt.js",[21,835,836,837],{},"Build command：",[93,838,283],{},[21,840,841,842],{},"Build output directory：",[93,843,844],{},"dist",[11,846,847],{},"你之前踩过的坑：",[18,849,850],{},[21,851,852,853,856],{},"填成 ",[93,854,855],{},".output/public","，会报 “build output directory not found”",[11,858,859,860,863,864,866,867,136],{},"原因：",[93,861,862],{},"nuxt generate"," 产物在 ",[93,865,844],{},"，而不是 ",[93,868,855],{},[79,870,872],{"id":871},"_34-你曾遇到的典型错误是怎么来的","3.4 你曾遇到的典型错误是怎么来的",[11,874,875],{},"报错：",[87,877,880],{"className":878,"code":879,"language":651,"meta":52},[649],"The name 'ASSETS' is reserved in Pages projects.\n",[93,881,879],{"__ignoreMap":52},[11,883,884],{},"本质原因：",[18,886,887],{},[21,888,889,890,893],{},"把 Worker 的 ",[93,891,892],{},"wrangler deploy"," 混进了 Pages 的构建流程",[11,895,896],{},"正确做法：",[34,898,899,902],{},[21,900,901],{},"Pages 只做站点构建与静态发布",[21,903,904],{},"Worker（如 OAuth）单独在本地/CI 用 wrangler 部署",[79,906,908],{"id":907},"_35-验收方法","3.5 验收方法",[11,910,911,912,914],{},"当你 push 到 ",[93,913,818],{}," 后：",[34,916,917,920,923],{},[21,918,919],{},"Cloudflare 自动出现新 deployment",[21,921,922],{},"状态为 Success（绿色）",[21,924,925,928],{},[93,926,927],{},"www.xuyangfly.site"," 可访问",[11,930,931],{},"部署失败时，优先查看：",[18,933,934,937,940],{},[21,935,936],{},"Build command",[21,938,939],{},"Output directory",[21,941,942],{},"是否有额外 deploy 命令误加",[455,944,945],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":52,"searchDepth":53,"depth":53,"links":947},[948,949,950,951,952],{"id":751,"depth":53,"text":752},{"id":789,"depth":53,"text":790},{"id":821,"depth":53,"text":822},{"id":871,"depth":53,"text":872},{"id":907,"depth":53,"text":908},"把仓库 adkeb/blog 接入 Pages，设置正确构建参数，避开常见部署报错。",[],{},"/chapter-posts/project-replication-guide/03-github-and-cloudflare-pages",{"title":746,"description":953},"03-github-and-cloudflare-pages","chapter-posts/project-replication-guide/03-github-and-cloudflare-pages",[68,961,962],"GitHub","Cloudflare Pages","LLAZYoqNkeb-e__OjK3h8vv8ZEdVqyLnVI-RE8JShJ0",1771232916064]