<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>shenjuexiao</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://shenjuexiao.com/</id>
  <link href="https://shenjuexiao.com/" rel="alternate"/>
  <link href="https://shenjuexiao.com/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, shenjuexiao</rights>
  <subtitle>@shenjuexiao</subtitle>
  <title>神觉晓</title>
  <updated>2026-08-30T07:54:21.000Z</updated>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<p>Test</p>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-30-Test/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-30-Test/"/>
    <published>2026-08-30T07:54:21.000Z</published>
    <summary>
      <![CDATA[<p>Test</p>]]>
    </summary>
    <title>Test</title>
    <updated>2026-08-30T07:54:21.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="Pelican-部署-GitHub-未生成文章"><a href="#Pelican-部署-GitHub-未生成文章" class="headerlink" title="Pelican 部署 GitHub 未生成文章"></a>Pelican 部署 GitHub 未生成文章</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Pelican_Has_No_Content.png" alt="Pelican Has No Content"></p><h2 id="📝-笔记总结"><a href="#📝-笔记总结" class="headerlink" title="📝 笔记总结"></a>📝 笔记总结</h2><ol><li><code>with:</code> 部分添加 <code>requirements</code> 参数；</li><li>项目根目录创建 <code>requirements.txt</code>。</li></ol><h2 id="📖-内容来源"><a href="#📖-内容来源" class="headerlink" title="📖 内容来源"></a>📖 内容来源</h2><ul><li><a href="https://docs.getpelican.com/en/latest/tips.html#publishing-to-github-pages-using-a-custom-github-actions-workflow">Publishing to GitHub Pages Using a Custom GitHub Actions Workflow</a></li><li><a href="https://docs.getpelican.com/zh-cn/latest/tips.html#publishing-to-github-pages-using-a-custom-github-actions-workflow">使用自定义GitHub Actions工作流将站点发布GitHub Pages中</a></li></ul><h2 id="⚠️-错误提示"><a href="#⚠️-错误提示" class="headerlink" title="⚠️ 错误提示"></a>⚠️ 错误提示</h2><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># .github/workflows/pelican.yml</span></span><br><span class="line"><span class="attr">name:</span> <span class="string">Deploy</span> <span class="string">to</span> <span class="string">GitHub</span> <span class="string">Pages</span></span><br><span class="line"><span class="attr">on:</span></span><br><span class="line">  <span class="attr">push:</span></span><br><span class="line">    <span class="attr">branches:</span> [<span class="string">\&quot;main\&quot;</span>]</span><br><span class="line">  <span class="attr">workflow_dispatch:</span></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">deploy:</span></span><br><span class="line">    <span class="attr">uses:</span> <span class="string">\&quot;getpelican/pelican/.github/workflows/github_pages.yml@main\&quot;</span></span><br><span class="line">    <span class="attr">permissions:</span></span><br><span class="line">      <span class="attr">contents:</span> <span class="string">\&quot;read\&quot;</span></span><br><span class="line">      <span class="attr">pages:</span> <span class="string">\&quot;write\&quot;</span></span><br><span class="line">      <span class="attr">id-token:</span> <span class="string">\&quot;write\&quot;</span></span><br><span class="line">    <span class="attr">with:</span></span><br><span class="line">      <span class="attr">settings:</span> <span class="string">\&quot;publishconf.py\&quot;</span></span><br></pre></td></tr></table></figure><p>使用官方的 <code>pelican.yml</code>，<code>content</code> 文件夹内有测试的文章 <code>*.md</code>，但是没有生成文章页面。</p><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Pelican_Build_Pelican_Site.png" alt="Pelican Build Pelican Site"></p><h2 id="💡-错误原因"><a href="#💡-错误原因" class="headerlink" title="💡 错误原因"></a>💡 错误原因</h2><blockquote><p>Could not import ‘markdown.Markdown’. Have you installed the ‘markdown’ package?<br><code>GitHub Actions</code> 环境中没有安装 <code>Markdown</code> 支持，所以 Pelican 无法解析 <code>.md</code> 文件，导致处理了 0 篇文章。</p></blockquote><h2 id="✅-解决方法"><a href="#✅-解决方法" class="headerlink" title="✅ 解决方法"></a>✅ 解决方法</h2><h3 id="with-部分添加-requirements-参数"><a href="#with-部分添加-requirements-参数" class="headerlink" title="with: 部分添加 requirements 参数"></a><code>with:</code> 部分添加 <code>requirements</code> 参数</h3><ul><li>指定需要安装的 <code>Python</code> 模块：</li></ul><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">with:</span></span><br><span class="line">  <span class="attr">settings:</span> <span class="string">\&quot;publishconf.py\&quot;</span></span><br><span class="line">  <span class="attr">requirements:</span> <span class="string">\&quot;pelican[markdown]</span> <span class="string">typogrify</span> <span class="string">markdown-include\&quot;</span></span><br></pre></td></tr></table></figure><ul><li>或者指定一个requirements文件： <code>-r requirements.txt</code>：</li></ul><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">with:</span></span><br><span class="line">  <span class="attr">settings:</span> <span class="string">\&quot;publishconf.py\&quot;</span></span><br><span class="line">  <span class="attr">requirements:</span> <span class="string">\&quot;-r</span> <span class="string">requirements.txt\&quot;</span></span><br></pre></td></tr></table></figure><ul><li>完整的工作流文件：</li></ul><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">name:</span> <span class="string">Deploy</span> <span class="string">to</span> <span class="string">GitHub</span> <span class="string">Pages</span></span><br><span class="line"></span><br><span class="line"><span class="attr">on:</span></span><br><span class="line">  <span class="attr">push:</span></span><br><span class="line">    <span class="attr">branches:</span> [<span class="string">\&quot;main\&quot;</span>]</span><br><span class="line">  <span class="attr">workflow_dispatch:</span></span><br><span class="line"></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">deploy:</span></span><br><span class="line">    <span class="attr">uses:</span> <span class="string">\&quot;getpelican/pelican/.github/workflows/github_pages.yml@main\&quot;</span></span><br><span class="line">    <span class="attr">permissions:</span></span><br><span class="line">      <span class="attr">contents:</span> <span class="string">\&quot;read\&quot;</span></span><br><span class="line">      <span class="attr">pages:</span> <span class="string">\&quot;write\&quot;</span></span><br><span class="line">      <span class="attr">id-token:</span> <span class="string">\&quot;write\&quot;</span></span><br><span class="line">    <span class="attr">with:</span></span><br><span class="line">      <span class="attr">settings:</span> <span class="string">\&quot;publishconf.py\&quot;</span></span><br><span class="line">      <span class="attr">requirements:</span> <span class="string">\&quot;-r</span> <span class="string">requirements.txt\&quot;</span></span><br></pre></td></tr></table></figure><h3 id="项目根目录创建-requirements-txt："><a href="#项目根目录创建-requirements-txt：" class="headerlink" title="项目根目录创建 requirements.txt："></a>项目根目录创建 <code>requirements.txt</code>：</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 导出当前环境所有包</span></span><br><span class="line">pip freeze &gt; requirements.txt</span><br></pre></td></tr></table></figure><p>典型的 Pelican 项目 <code>requirements.txt</code> 参考：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Pelican 核心 + Markdown 支持</span></span><br><span class="line">pelican[markdown]==4.12.0</span><br><span class="line"><span class="comment"># 排版优化（智能引号、连字符等）</span></span><br><span class="line">typogrify==2.1.0</span><br><span class="line"><span class="comment"># 支持在 Markdown 中包含其他文件               </span></span><br><span class="line">markdown-include==0.8.1</span><br><span class="line"><span class="comment"># 代码高亮</span></span><br><span class="line">pygments==2.17.2</span><br><span class="line"><span class="comment"># 同时支持 Markdown 和 reStructuredText</span></span><br><span class="line"><span class="comment"># pelican[markdown,html_rst]</span></span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-30-Pelican-Has-No-Content/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-30-Pelican-Has-No-Content/"/>
    <published>2026-08-29T18:15:55.000Z</published>
    <summary>
      <![CDATA[<h1 id="Pelican-部署-GitHub-未生成文章"><a href="#Pelican-部署-GitHub-未生成文章" class="headerlink" title="Pelican 部署 GitHub 未生成文章"></a>Pelican 部署 GitHub]]>
    </summary>
    <title>Pelican Has No Content</title>
    <updated>2026-08-29T18:15:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="SvelteKit-构建-GitHub-Pages"><a href="#SvelteKit-构建-GitHub-Pages" class="headerlink" title="SvelteKit 构建 GitHub Pages"></a>SvelteKit 构建 GitHub Pages</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/SvelteKit_GitHub_Pages_Upload_Artifacts.png" alt="GitHub Actions Free Minutes"></p><h2 id="📝-笔记总结"><a href="#📝-笔记总结" class="headerlink" title="📝 笔记总结"></a>📝 笔记总结</h2><ol><li>增加文件：<code>svelte.config.js</code> ；</li><li>增加文件：<code>src/routes/+layout.js</code> 。</li></ol><h2 id="📖-内容来源"><a href="#📖-内容来源" class="headerlink" title="📖 内容来源"></a>📖 内容来源</h2><ul><li><a href="https://svelte.js.cn/docs/kit/adapter-static#GitHub-Pages">SvelteKit 构建和部署 - 静态网站生成 - GitHub Pages</a></li><li><a href="https://svelte.js.cn/docs/kit/adapter-static#GitHub-Pages">SvelteKit Build and deploy - Static Site Generation - GitHub Pages</a></li></ul><h2 id="💡错误提示"><a href="#💡错误提示" class="headerlink" title="💡错误提示"></a>💡错误提示</h2><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># .github/workflows/deploy.yml</span></span><br><span class="line"><span class="attr">name:</span> <span class="string">Deploy</span> <span class="string">to</span> <span class="string">GitHub</span> <span class="string">Pages</span></span><br><span class="line"></span><br><span class="line"><span class="attr">on:</span></span><br><span class="line">  <span class="attr">push:</span></span><br><span class="line">    <span class="attr">branches:</span> <span class="string">&#x27;main&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">build_site:</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Checkout</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/checkout@v7</span></span><br><span class="line"></span><br><span class="line">      <span class="comment"># If you&#x27;re using pnpm, add this step then change the commands and cache key below to use `pnpm`</span></span><br><span class="line">      <span class="comment"># - name: Install pnpm</span></span><br><span class="line">      <span class="comment">#   uses: pnpm/action-setup@v6</span></span><br><span class="line">      <span class="comment">#   with:</span></span><br><span class="line">      <span class="comment">#     version: 8</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Install</span> <span class="string">Node.js</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/setup-node@v6</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">node-version:</span> <span class="number">20</span></span><br><span class="line">          <span class="attr">cache:</span> <span class="string">npm</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Install</span> <span class="string">dependencies</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">npm</span> <span class="string">i</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">build</span></span><br><span class="line">        <span class="attr">env:</span></span><br><span class="line">          <span class="attr">BASE_PATH:</span> <span class="string">&#x27;/$&#123;&#123; github.event.repository.name &#125;&#125;&#x27;</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">          npm run build</span></span><br><span class="line"><span class="string"></span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Upload</span> <span class="string">Artifacts</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/upload-pages-artifact@v5</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="comment"># this should match the `pages` option in your adapter-static options</span></span><br><span class="line">          <span class="attr">path:</span> <span class="string">&#x27;build/&#x27;</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">deploy:</span></span><br><span class="line">    <span class="attr">needs:</span> <span class="string">build_site</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line"></span><br><span class="line">    <span class="attr">permissions:</span></span><br><span class="line">      <span class="attr">pages:</span> <span class="string">write</span></span><br><span class="line">      <span class="attr">id-token:</span> <span class="string">write</span></span><br><span class="line"></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="attr">name:</span> <span class="string">github-pages</span></span><br><span class="line">      <span class="attr">url:</span> <span class="string">$&#123;&#123;</span> <span class="string">steps.deployment.outputs.page_url</span> <span class="string">&#125;&#125;</span></span><br><span class="line"></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Deploy</span></span><br><span class="line">        <span class="attr">id:</span> <span class="string">deployment</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/deploy-pages@v5</span></span><br></pre></td></tr></table></figure><p>使用官方的 <code>deploy.yml</code> ，运行失败，下面提示：</p><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/SvelteKit_GitHub_Pages_Upload_Artifacts.png" alt="SvelteKit GitHub Pages Upload Artifacts"></p><p>错误表明 <code>GitHub Actions</code> 在运行 actions&#x2F;upload-pages-artifact@v5 时，找不到 <code>build/</code> 目录。</p><p>本地构建文件都生成在 <code>.svelte-kit/output/server/</code> 目录下，而不是 <code>build</code> 文件夹，说明 adapter-static 可能没有正确执行，或者构建过程在预渲染阶段失败了。</p><h2 id="🚀-官方方法"><a href="#🚀-官方方法" class="headerlink" title="🚀 官方方法"></a>🚀 官方方法</h2><blockquote><p>使用 npm i -D @sveltejs&#x2F;adapter-static 安装，然后将适配器添加到你的 svelte.config.js 中。</p></blockquote><ol><li>增加文件：<code>svelte.config.js</code></li></ol><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"><span class="keyword">import</span> adapter <span class="keyword">from</span> <span class="string">&#x27;@sveltejs/adapter-static&#x27;</span>;</span><br><span class="line"></span><br><span class="line"><span class="keyword">export</span> <span class="keyword">default</span> &#123;</span><br><span class="line"><span class="attr">kit</span>: &#123;</span><br><span class="line"><span class="attr">adapter</span>: <span class="title function_">adapter</span>(&#123;</span><br><span class="line"><span class="comment">// default options are shown. On some platforms</span></span><br><span class="line"><span class="comment">// these options are set automatically — see below</span></span><br><span class="line"><span class="attr">pages</span>: <span class="string">&#x27;build&#x27;</span>,</span><br><span class="line"><span class="attr">assets</span>: <span class="string">&#x27;build&#x27;</span>,</span><br><span class="line"><span class="attr">fallback</span>: <span class="literal">undefined</span>,</span><br><span class="line"><span class="attr">precompress</span>: <span class="literal">false</span>,</span><br><span class="line"><span class="attr">strict</span>: <span class="literal">true</span></span><br><span class="line">&#125;)</span><br><span class="line">&#125;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><ol start="2"><li>增加文件：<code>src/routes/+layout.js</code></li></ol><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// This can be false if you&#x27;re using a fallback (i.e. SPA mode)</span></span><br><span class="line"><span class="keyword">export</span> <span class="keyword">const</span> prerender = <span class="literal">true</span>;</span><br></pre></td></tr></table></figure><h2 id="💎-解决结果"><a href="#💎-解决结果" class="headerlink" title="💎 解决结果"></a>💎 解决结果</h2><p>文件生成在 <code>.svelte-kit/output/server/</code> 和 <code>build</code> 文件夹。</p><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/SvelteKit_npm_run_build.png" alt="SvelteKit npm run build"></p>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-29-SvelteKit-Build-GitHub-Pages/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-29-SvelteKit-Build-GitHub-Pages/"/>
    <published>2026-08-29T07:59:10.000Z</published>
    <summary>
      <![CDATA[<h1 id="SvelteKit-构建-GitHub-Pages"><a href="#SvelteKit-构建-GitHub-Pages" class="headerlink" title="SvelteKit 构建 GitHub Pages"></a>SvelteKit 构]]>
    </summary>
    <title>SvelteKit Build GitHub Pages</title>
    <updated>2026-08-29T07:59:49.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="GitHub-Actions-免费额度"><a href="#GitHub-Actions-免费额度" class="headerlink" title="GitHub Actions 免费额度"></a>GitHub Actions 免费额度</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/GitHub_Actions_Free_Minutes.png" alt="GitHub Actions Free Minutes"></p><h2 id="📝-笔记总结"><a href="#📝-笔记总结" class="headerlink" title="📝 笔记总结"></a>📝 笔记总结</h2><p>今天发现私有仓库的 Actions 运行失败了，下面提示：</p><blockquote><p>The job was not started because recent account payments have failed or your spending limit needs to be increased. Please check the ‘Billing &amp; plans’ section in your settings</p></blockquote><p>我查询了一下，原来是免费额度用完了，顺便多了解了下。</p><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/GitHub_Actions_Free_Minutes_Annotations.png" alt="GitHub Actions Free Minutes Annotations"></p><p>查询：<code>Settings</code> → <code>Billing and plans</code> → <code>Overview</code></p><p>页面中有一个 &quot;Usage by products&quot; 区域，点击 Actions 标签。</p><p>额度不够，是不是设置一个小号或者组织差不多够用。</p><h2 id="📖-内容来源"><a href="#📖-内容来源" class="headerlink" title="📖 内容来源"></a>📖 内容来源</h2><ul><li><a href="https://chat.deepseek.com/share/o9b22o7ps1i6wkbsud">GitHub Actions 免费额度</a>（<a href="https://chat.deepseek.com/a/chat/s/555a1147-4240-40fb-9601-1ff98be70be1">DeepSeek</a>）</li></ul><p>GitHub Actions 的免费额度主要根据<strong>仓库是公开还是私有</strong>以及<strong>账户订阅计划</strong>来决定。核心原则是：<strong>公开仓库完全免费，私有仓库有每月额度限制</strong>。</p><p>把不同计划的免费额度表格查看：</p><table><thead><tr><th align="left">账户计划</th><th align="left">免费分钟数&#x2F;月 (私有仓库)</th><th align="left">免费存储空间 (工件与缓存)</th></tr></thead><tbody><tr><td align="left"><strong>GitHub Free</strong> (个人)</td><td align="left">2,000 分钟</td><td align="left">500 MB</td></tr><tr><td align="left"><strong>GitHub Free</strong> (组织)</td><td align="left">2,000 分钟</td><td align="left">500 MB</td></tr><tr><td align="left"><strong>GitHub Pro</strong></td><td align="left">3,000 分钟</td><td align="left">1 GB</td></tr><tr><td align="left"><strong>GitHub Team</strong></td><td align="left">3,000 分钟</td><td align="left">2 GB</td></tr><tr><td align="left"><strong>GitHub Enterprise Cloud</strong></td><td align="left">50,000 分钟</td><td align="left">50 GB</td></tr></tbody></table><blockquote><p><strong>提示</strong>：表格中的存储额度是<strong>工件（Artifacts）</strong> 和<strong>缓存（Cache）</strong> 共享的总和。缓存每个仓库还有额外的 10 GB 限制。</p></blockquote><h2 id="💡-超限后会发生什么？"><a href="#💡-超限后会发生什么？" class="headerlink" title="💡 超限后会发生什么？"></a>💡 超限后会发生什么？</h2><ul><li><strong>如果设置了支出限额</strong>：一旦用完免费额度，超出的部分会按标准费率（Linux 约 $0.008&#x2F;分钟）计费，直到设置的限额为止。</li><li><strong>如果未设置支出限额（限额为 0）</strong>：私有仓库的 Actions 会<strong>停止运行</strong>，直到下一个计费周期重置。</li></ul><h2 id="🚀-一些关键细节和限制"><a href="#🚀-一些关键细节和限制" class="headerlink" title="🚀 一些关键细节和限制"></a>🚀 一些关键细节和限制</h2><ul><li><strong>工作流并发限制</strong>：GitHub Free 计划最多允许 <strong>20 个作业并发运行</strong>。如果超出，作业会进入排队状态。</li><li><strong>单次作业超时</strong>：GitHub 托管运行器上的单个作业最多运行 <strong>6 小时</strong>，超时后会被自动取消。</li><li><strong>存储扣费逻辑</strong>：存储费用是按小时计费并累积的。删除文件只能<strong>阻止未来继续计费</strong>，但无法免除文件在留存期间已经产生的费用。</li><li><strong>账户计费独立</strong>：个人账户和组织的付费额度是分开的，为组织付款不会覆盖到个人账户。</li><li><strong>Copilot 代码评审</strong>：这项功能（如果启用）在私有仓库中也会消耗 Actions 分钟数。</li></ul><h2 id="💎-总结与建议"><a href="#💎-总结与建议" class="headerlink" title="💎 总结与建议"></a>💎 总结与建议</h2><p>如果是开源项目或个人学习，公开仓库是零成本的最佳选择。如果必须使用私有仓库，建议密切关注仪表盘上的用量，并根据实际情况设置支出限额，防止意外超支。</p>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-21-GitHub-Actions-Free-Minutes/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-21-GitHub-Actions-Free-Minutes/"/>
    <published>2026-08-21T07:20:07.000Z</published>
    <summary>
      <![CDATA[<h1 id="GitHub-Actions-免费额度"><a href="#GitHub-Actions-免费额度" class="headerlink" title="GitHub Actions 免费额度"></a>GitHub Actions 免费额度</h1><p><i]]>
    </summary>
    <title>GitHub Actions Free Minutes</title>
    <updated>2026-08-21T07:20:07.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="Next-js-博客模板"><a href="#Next-js-博客模板" class="headerlink" title="Next.js 博客模板"></a>Next.js 博客模板</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Next.js_Blog_Template.png" alt="Next.js Blog Template"></p><h2 id="📝-笔记总结"><a href="#📝-笔记总结" class="headerlink" title="📝 笔记总结"></a>📝 笔记总结</h2><p>目前最好用的 Next.js 博客模板，首选功能最全的 tailwind-nextjs-starter-blog，它几乎涵盖了个人博客可能需要的所有功能，而且社区非常活跃。如果想找一个更轻量、更现代的选择，nextjs-mdx-blog-template 也很不错，基于最新的 Next.js 15 和 React 19</p><hr><h2 id="Next-js-Blog-Boilerplate"><a href="#Next-js-Blog-Boilerplate" class="headerlink" title="Next-js-Blog-Boilerplate"></a>Next-js-Blog-Boilerplate</h2><p><strong>项目名称：</strong> ixartz&#x2F;Next-js-Blog-Boilerplate<br><strong>适用场景：</strong> 快速上手，希望项目结构清晰、易于维护的开发者。<br><strong>核心特点：</strong></p><ul><li>简洁的 CLI 工具一键创建项目，快速启动开发。</li><li>整合了 Radix UI、Lucide 图标等现代 UI 库，界面组件丰富。</li><li>项目结构清晰规范，易于维护和二次开发。</li><li>内置 TypeScript 支持和 ESLint 配置，保证代码质量。<br><strong>项目演示：</strong> <a href="https://creativedesignsguru.com/">creativedesignsguru.com</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/ixartz/Next-js-Blog-Boilerplate">github.com&#x2F;ixartz&#x2F;Next-js-Blog-Boilerplate</a></li></ul><hr><h2 id="next-mdx-blog"><a href="#next-mdx-blog" class="headerlink" title="next-mdx-blog"></a>next-mdx-blog</h2><p><strong>项目名称：</strong> leerob&#x2F;next-mdx-blog<br><strong>适用场景：</strong> Next.js 初学者，或希望从一个轻量、官方风格项目开始进行学习的开发者。<br><strong>核心特点：</strong></p><ul><li>由 Vercel 的开发者关系负责人（Lee Robinson）维护，代码结构清晰规范。</li><li>基于 Next.js、MDX 和 Tailwind CSS 构建，轻量简洁。</li><li>可作为理解 Next.js + MDX 博客核心逻辑的绝佳起点，便于进行高度定制。</li><li>集成了 Vercel Analytics。<br><strong>项目演示：</strong> <a href="https://next-blog-mdx.vercel.app/">next-blog-mdx.vercel.app</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/leerob/next-mdx-blog">github.com&#x2F;leerob&#x2F;next-mdx-blog</a></li></ul><hr><h2 id="🌟-nextjs-mdx-blog-template"><a href="#🌟-nextjs-mdx-blog-template" class="headerlink" title="🌟 nextjs-mdx-blog-template"></a>🌟 nextjs-mdx-blog-template</h2><p><strong>项目名称：</strong> loke-dev&#x2F;nextjs-mdx-blog-template<br><strong>适用场景：</strong> 追求极致简洁、最新 Web API 和流畅动画体验的开发者。<br><strong>核心特点：</strong></p><ul><li>采用 Next.js 15 的 App Router 和 React 19 Server Components。</li><li>内置 View Transitions API，实现平滑的页面过渡动画。</li><li>使用 shadcn&#x2F;ui（Radix UI）保证可访问性，Shiki 实现代码高亮。</li><li>项目结构清晰，对 SEO 友好，开箱即用。<br><strong>项目演示：</strong> <a href="https://nextjs-mdx-blog-template.vercel.app/">nextjs-mdx-blog-template.vercel.app</a><br><strong>备用演示：</strong> <a href="https://nextjs-mdx-blog.loke.dev/">nextjs-mdx-blog.loke.dev</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/loke-dev/nextjs-mdx-blog-template">github.com&#x2F;loke-dev&#x2F;nextjs-mdx-blog-template</a></li></ul><h2 id="nextjs-portfolio-blog-research"><a href="#nextjs-portfolio-blog-research" class="headerlink" title="nextjs-portfolio-blog-research"></a>nextjs-portfolio-blog-research</h2><p><strong>项目名称：</strong> zhengzangw&#x2F;nextjs-portfolio-blog-research<br><strong>适用场景：</strong> 追求现代化设计、国际化支持，以及希望尝试最新技术栈的研究者、开发者与创作者。<br><strong>核心特点：</strong></p><ul><li>技术栈新，采用 Next.js 15、React 19 和 Tailwind CSS 4。</li><li>UI 精美，使用 shadcn&#x2F;ui 和 Framer Motion 构建组件与动画。</li><li>支持 AI 辅助定制（Cursor Rules）和中英双语国际化（i18n）。</li><li>内置丰富的作品集、博客模块，SEO 优化完善（JSON-LD、Open Graph），性能出色。<br><strong>项目演示：</strong> <a href="https://nextjs-portfolio-blog-research.vercel.app/">nextjs-portfolio-blog-research.vercel.app</a><br><strong>备用演示：</strong> <a href="https://www.zangwei.dev/open-source/nextjs-portfolio-blog-research/docs">www.zangwei.dev/open-source/nextjs-portfolio-blog-research/docs</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/zhengzangw/nextjs-portfolio-blog-research">github.com&#x2F;zhengzangw&#x2F;nextjs-portfolio-blog-research</a></li></ul><hr><h2 id="nextjs-sanity-blog"><a href="#nextjs-sanity-blog" class="headerlink" title="nextjs-sanity-blog"></a>nextjs-sanity-blog</h2><p><strong>项目名称：</strong> @multidots&#x2F;sanity-blog-theme<br><strong>适用场景：</strong> 需要复杂内容结构（如有独立作者、分类、SEO管理）的团队或个人项目。<br><strong>核心特点：</strong></p><ul><li>结合 Sanity CMS（强大的结构化内容平台），提供灵活的内容建模能力。</li><li>包含页面构建器和编辑器友好界面，方便非技术人员管理内容。</li><li>支持多作者、分类、标签、SEO 元数据管理等复杂内容结构。</li><li>基于 Next.js 和 Sanity 官方最佳实践构建。<br><strong>项目演示：</strong> <a href="https://www.sanity.io/templates/nextjs-blog">www.sanity.io/templates/nextjs-blog</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/multidots/nextjs-sanity-blog">github.com&#x2F;multidots&#x2F;nextjs-sanity-blog</a><br><strong>GitHub 备用：</strong> <a href="https://github.com/multidots/sanity-blog">github.com&#x2F;multidots&#x2F;sanity-blog</a></li></ul><hr><h2 id="🌟-NotionNext"><a href="#🌟-NotionNext" class="headerlink" title="🌟 NotionNext"></a>🌟 NotionNext</h2><p><strong>项目名称：</strong> QiLOL&#x2F;NotionNext<br><strong>适用场景：</strong> 习惯使用 Notion 写作，希望将 Notion 作为 CMS（内容管理系统）快速搭建博客或知识库的用户。<br><strong>核心特点：</strong></p><ul><li>基于 Next.js 和 Notion API，将 Notion 笔记渲染为静态博客页面。</li><li>内置多达 25 种主题，可一键切换。</li><li>支持多种评论系统（Twikoo, Giscus, Gitalk 等）。</li><li>项目活跃，持续更新，提供详细的中文文档。<br><strong>项目演示：</strong> <a href="https://preview.tangly1024.com/">preview.tangly1024.com</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/QiLOL/NotionNext">github.com&#x2F;QiLOL&#x2F;NotionNext</a></li></ul><hr><h2 id="starter-nextjs-blog"><a href="#starter-nextjs-blog" class="headerlink" title="starter-nextjs-blog"></a><del>starter-nextjs-blog</del></h2><p><strong>项目名称：</strong> Hashnode&#x2F;starter-nextjs-blog<br><strong>适用场景：</strong> 习惯在云端写稿、管理内容，又想自己搭建前端、保持UI高度自定义的创作者。<br><strong>核心特点：</strong></p><ul><li>结合 Hashnode 强大的云端 CMS 管理后台，前端完全自定义。</li><li>通过 GraphQL API 获取内容，支持实时预览。</li><li>内置 SEO 优化，与 Hashnode 生态无缝集成。</li><li>适合已有 Hashnode 账号、希望保持写作习惯但拥有独立前端的用户。<br><strong>项目演示：</strong> <a href="https://github.com/Hashnode/starter-nextjs-blog">github.com&#x2F;Hashnode&#x2F;starter-nextjs-blog</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/Hashnode/starter-nextjs-blog">github.com&#x2F;Hashnode&#x2F;starter-nextjs-blog</a></li></ul><hr><h2 id="tailblaze"><a href="#tailblaze" class="headerlink" title="tailblaze"></a>tailblaze</h2><p><strong>项目名称：</strong> tailblaze<br><strong>适用场景：</strong> 目标是将博客部署到 Cloudflare Pages，或需要一个高性能静态站点的开发者。<br><strong>核心特点：</strong></p><ul><li>功能齐全，PWA 就绪，支持离线访问能力。</li><li>强调性能和页面速度，经过 Lighthouse 优化。</li><li>支持静态导出 (SSG)，可无缝部署到 Cloudflare Pages、Netlify 等平台。</li><li>基于 Next.js、Tailwind CSS 和 TypeScript 构建。<br><strong>项目演示：</strong> <a href="https://tailblaze.pages.dev/">tailblaze.pages.dev</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/samrobbins/tailblaze">github.com&#x2F;samrobbins&#x2F;tailblaze</a></li></ul><hr><h2 id="🌟-tailwind-nextjs-starter-blog"><a href="#🌟-tailwind-nextjs-starter-blog" class="headerlink" title="🌟 tailwind-nextjs-starter-blog"></a>🌟 tailwind-nextjs-starter-blog</h2><p><strong>项目名称：</strong> timlrx&#x2F;tailwind-nextjs-starter-blog<br><strong>适用场景：</strong> 个人技术博客、作品集网站，以及希望从 Jekyll&#x2F;Hugo 迁移到 Next.js 的用户。<br><strong>核心特点：</strong></p><ul><li>功能非常全面，社区活跃（9.7k Star），可视为&quot;功能最全的博客启动模板&quot;。</li><li>基于 Next.js、TypeScript 和 Tailwind CSS 构建，使用 Contentlayer 管理内容逻辑。</li><li>集成多种分析、评论、邮件订阅方案（如 Pliny 插件），支持 SEO、RSS、数学公式（KaTeX）、搜索（Kbar&#x2F;Algolia）等。</li><li>提供多种博客布局和列表布局，支持多作者和标签系统。<br><strong>项目演示：</strong> <a href="https://tailwind-nextjs-starter-blog.vercel.app/">tailwind-nextjs-starter-blog.vercel.app</a><br><strong>项目演示：</strong> 项目 README 列出多个使用该模板的示例网站。<br><strong>GitHub 地址：</strong> <a href="https://github.com/timlrx/tailwind-nextjs-starter-blog">github.com&#x2F;timlrx&#x2F;tailwind-nextjs-starter-blog</a></li></ul>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-19-Next-js-Blog-Template/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-19-Next-js-Blog-Template/"/>
    <published>2026-08-18T23:53:24.000Z</published>
    <summary>
      <![CDATA[<h1 id="Next-js-博客模板"><a href="#Next-js-博客模板" class="headerlink" title="Next.js 博客模板"></a>Next.js 博客模板</h1><p><img src="https://cdn.jsdelivr]]>
    </summary>
    <title>Next.js Blog Template</title>
    <updated>2026-08-19T00:46:06.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="知识库与博客结合的模板"><a href="#知识库与博客结合的模板" class="headerlink" title="知识库与博客结合的模板"></a>知识库与博客结合的模板</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Wiki_and_Blog_SCG_Template.png" alt="Wiki and Blog SCG Template"></p><p>知识库与博客的结合，关键在于处理好<strong>结构化知识沉淀</strong>与<strong>碎片化内容输出</strong>之间的关系。以下整理了三种主流的模板方案，可以根据自己对技术栈的偏好和功能需求来选择。</p><hr><h2 id="1️⃣-文档驱动型：VitePress-博客主题"><a href="#1️⃣-文档驱动型：VitePress-博客主题" class="headerlink" title="1️⃣ 文档驱动型：VitePress + 博客主题"></a>1️⃣ 文档驱动型：VitePress + 博客主题</h2><p><strong>适合</strong>：偏好纯文档风格，希望将技术笔记和博客文章统一管理，且追求极致性能的技术写作者。</p><p>这个方案基于 VitePress（Vue 驱动的静态站点生成器），通过 <code>vitepress-theme-teek</code> 这类主题，在原生文档站基础上注入博客功能。模板会按文件路径自动生成侧边栏，构建出结构化的知识库；博客功能则作为“碎片化知识”的补充，支持文章分类、标签和归档。</p><ul><li><strong>技术栈</strong>：VitePress、Vue、Markdown。</li><li><strong>核心能力</strong>：自动生成侧边栏&#x2F;目录页、全文搜索、暗黑模式、支持评论系统（Giscus&#x2F;Twikoo）。</li><li><strong>快速体验</strong>：可直接克隆 <code>chuiyu_Wiki</code> 这类现成项目，或参照 Teek 主题文档初始化。</li></ul><h3 id="vitepress-theme-teek"><a href="#vitepress-theme-teek" class="headerlink" title="vitepress-theme-teek"></a>vitepress-theme-teek</h3><ul><li>项目演示：<a href="https://vp.teek.top/">VitePress Teek 主题演示站</a></li><li>GitHub 地址：<a href="https://github.com/Kele-Bingtang/vitepress-theme-teek">Kele-Bingtang&#x2F;vitepress-theme-teek</a></li></ul><h3 id="chuiyu-Wiki"><a href="#chuiyu-Wiki" class="headerlink" title="chuiyu_Wiki"></a>chuiyu_Wiki</h3><ul><li>项目演示：<a href="https://chuiyu.wiki/">chuiyu.wiki</a></li><li>GitHub 地址：<a href="https://github.com/ana52070/chuiyu_Wiki">ana52070&#x2F;chuiyu_Wiki</a></li></ul><h2 id="2️⃣-博客优先型：Astro-主题（知识图谱-搜索）"><a href="#2️⃣-博客优先型：Astro-主题（知识图谱-搜索）" class="headerlink" title="2️⃣ 博客优先型：Astro 主题（知识图谱 + 搜索）"></a>2️⃣ 博客优先型：Astro 主题（知识图谱 + 搜索）</h2><p><strong>适合</strong>：内容较为丰富、需要强大检索能力来盘活知识库的博主。</p><p>Astro 因为对内容站点的高性能支持，出现了一批优秀的“博客+知识库”主题。例如 <code>astro-theme-iris</code>，它实现了<strong>双链笔记（Wikilink）<strong>和</strong>知识图谱（Graph View）</strong>，能直观看到文章间的关联。配合 FlexSearch 实现的实时全文检索，能极大提升查找历史笔记的效率。而 <code>qiyuan-blog-template</code> 则更进一步，在 Astro 基础上集成了 RAG（检索增强生成）AI 问答，让读者可以直接向你的知识库提问。</p><ul><li><strong>技术栈</strong>：Astro、TypeScript、FlexSearch&#x2F;D3.js。</li><li><strong>核心能力</strong>：双链预览、知识图谱可视化、高性能搜索、AI 问答（RAG）。</li><li><strong>快速体验</strong>：在 GitHub 搜索对应仓库，点击 &quot;Use this template&quot; 即可一键创建。</li></ul><h3 id="astro-theme-iris"><a href="#astro-theme-iris" class="headerlink" title="astro-theme-iris"></a>astro-theme-iris</h3><ul><li>项目演示：<a href="https://lemonadorable.github.io/">LemonAdorable 的 Astro Iris 主题演示</a></li><li>GitHub 地址：<a href="https://github.com/LemonAdorable/astro-theme-iris">LemonAdorable&#x2F;astro-theme-iris</a></li></ul><h3 id="qiyuan-blog-template"><a href="#qiyuan-blog-template" class="headerlink" title="qiyuan-blog-template"></a>qiyuan-blog-template</h3><ul><li>项目演示：<a href="https://www.qiyuan.icu/">qiyuan.icu</a></li><li>GitHub 地址：<a href="https://github.com/violet27chen/qiyuan-blog-template">violet27chen&#x2F;qiyuan-blog-template</a></li></ul><h2 id="3️⃣-全栈管理型：Next-js-全功能平台"><a href="#3️⃣-全栈管理型：Next-js-全功能平台" class="headerlink" title="3️⃣ 全栈管理型：Next.js 全功能平台"></a>3️⃣ 全栈管理型：Next.js 全功能平台</h2><p><strong>适合</strong>：需要后台管理、富文本编辑，且希望拥有 AI 辅助写作能力的深度内容创作者。</p><p>如果觉得静态模板定制性有限，可以考虑 Next.js 打造的全栈平台。例如 <strong>Petrichor</strong>，它不仅是一个展示站点，更包含完整的 CMS（内容管理系统），支持富文本编辑、知识库目录树，甚至集成了 AI 续写、改写和周报生成功能。<code>next-ai-blog-cms</code> 则侧重技术实现，提供了完整的后台管理界面和基于向量检索（RAG）的站内问答，实现了从写作、存储到智能问答的闭环。</p><ul><li><strong>技术栈</strong>：Next.js、Supabase&#x2F;PostgreSQL、Prisma、TailwindCSS。</li><li><strong>核心能力</strong>：AI 写作助手、富文本编辑器、后台仪表盘、RAG 知识库问答。</li><li><strong>快速体验</strong>：项目通常支持一键部署到 Vercel，需准备好数据库（如 Supabase）和环境变量。</li></ul><h3 id="next-ai-blog-cms"><a href="#next-ai-blog-cms" class="headerlink" title="next-ai-blog-cms"></a>next-ai-blog-cms</h3><ul><li>项目演示：<a href="https://fcppddl.top/">fcppddl.top</a></li><li>GitHub 地址：<a href="https://github.com/fcppddl/next-ai-blog-cms">fcppddl&#x2F;next-ai-blog-cms</a></li></ul><h2 id="📊-表格对比"><a href="#📊-表格对比" class="headerlink" title="📊 表格对比"></a>📊 表格对比</h2><table><thead><tr><th align="left">模板方案</th><th align="left">推荐场景</th><th align="left">主要技术</th><th align="left">核心特色</th></tr></thead><tbody><tr><td align="left"><strong>VitePress + Teek 主题</strong></td><td align="left">文档技术博客、笔记整理</td><td align="left">VitePress, Vue</td><td align="left">文档&#x2F;博客双模式，自动生成结构化目录</td></tr><tr><td align="left"><strong>Astro 主题 (Iris&#x2F;Qiyuan)</strong></td><td align="left">知识图谱展示、AI 问答博客</td><td align="left">Astro, D3.js, RAG</td><td align="left">可视化知识图谱，站内 AI 助手（RAG）</td></tr><tr><td align="left"><strong>Next.js 全栈平台 (Petrichor)</strong></td><td align="left">需后台管理、AI 辅助创作</td><td align="left">Next.js, Supabase, Prisma</td><td align="left">富文本编辑器，AI 写作与周报，后台 CMS</td></tr></tbody></table><h2 id="🌟-选型建议"><a href="#🌟-选型建议" class="headerlink" title="🌟 选型建议"></a>🌟 选型建议</h2><ol><li><strong>如果追求简单和速度</strong>：方案一（VitePress）最轻量，维护成本低，适合以 Markdown 为主的笔记博主。</li><li><strong>如果希望内容被“盘活”</strong>：方案二（Astro）的图谱和 AI 能力，能让你的旧文章通过关联和问答重新被发现。</li><li><strong>如果需要深度管理内容</strong>：方案三（Next.js）提供了完整的后台和 AI 写作流，更适合系列化、长周期的内容创作。</li></ol><p>以上方案均为开源项目，除自行部署外，也可参考 WorkBuddy + MaxKB 等方案，为现有静态博客快速接入知识库问答能力。</p>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-18-Wiki-and-Blog-SCG-Template/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-18-Wiki-and-Blog-SCG-Template/"/>
    <published>2026-08-18T01:39:48.000Z</published>
    <summary>
      <![CDATA[<h1 id="知识库与博客结合的模板"><a href="#知识库与博客结合的模板" class="headerlink" title="知识库与博客结合的模板"></a>知识库与博客结合的模板</h1><p><img src="https://cdn.jsdelivr.net]]>
    </summary>
    <title>Wiki and Blog SCG Template</title>
    <updated>2026-08-18T19:51:42.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="npm-切换国内镜像"><a href="#npm-切换国内镜像" class="headerlink" title="npm 切换国内镜像"></a>npm 切换国内镜像</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/nrm_use_taobao.png" alt="nrm use taobao"></p><h2 id="📝-笔记总结"><a href="#📝-笔记总结" class="headerlink" title="📝 笔记总结"></a>📝 笔记总结</h2><p>推荐使用 <code>nrm</code>，命令简单，切换方便。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 1. 全局安装 nrm</span></span><br><span class="line">npm install -g nrm</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2. 查看所有可用的源（带 * 的是当前源）</span></span><br><span class="line">nrm <span class="built_in">ls</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 切换到淘宝镜像</span></span><br><span class="line">nrm use taobao</span><br><span class="line"></span><br><span class="line"><span class="comment"># 4. 验证是否设置成功</span></span><br><span class="line">npm config get registry</span><br></pre></td></tr></table></figure><h2 id="📖-内容来源"><a href="#📖-内容来源" class="headerlink" title="📖 内容来源"></a>📖 内容来源</h2><ul><li><a href="https://chat.deepseek.com/share/jk9ajonzvgeu285q4f">NPM切换国内镜像</a>（<a href="https://chat.deepseek.com/a/chat/s/1107102b-569f-412a-8e64-53a2221a2abd">DeepSeek</a>）</li></ul><h2 id="🎯-最新稳定镜像地址"><a href="#🎯-最新稳定镜像地址" class="headerlink" title="🎯 最新稳定镜像地址"></a>🎯 最新稳定镜像地址</h2><p>在国内使用 npm，切换镜像源几乎是必做的优化。核心操作很简单，但注意务必使用最新的地址。</p><p><strong>淘宝 NPM 镜像（强烈推荐）</strong>：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://registry.npmmirror.com/</span><br></pre></td></tr></table></figure><blockquote><p><strong>特别提醒</strong>：淘宝 NPM 官方源地址已于 2024 年迁移至 <code>npmmirror.com</code>，旧的 <code>npm.taobao.org</code> 域名已废弃，请勿继续使用。</p></blockquote><p>其他备选国内镜像源还有：</p><ul><li>腾讯云：<code>https://mirrors.cloud.tencent.com/npm/</code></li><li>华为云：<code>https://mirrors.huaweicloud.com/repository/npm/</code></li><li>阿里云：<code>https://npm.aliyun.com</code></li></ul><h2 id="🔧-切换方法"><a href="#🔧-切换方法" class="headerlink" title="🔧 切换方法"></a>🔧 切换方法</h2><h3 id="临时使用（仅对当前命令生效）"><a href="#临时使用（仅对当前命令生效）" class="headerlink" title="临时使用（仅对当前命令生效）"></a>临时使用（仅对当前命令生效）</h3><p>安装单个包时，直接通过 <code>--registry</code> 参数指定：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install [package-name] --registry=https://registry.npmmirror.com</span><br></pre></td></tr></table></figure><p>这种方法快速、安全，适合临时下载某个包。</p><h3 id="永久修改（全局生效）"><a href="#永久修改（全局生效）" class="headerlink" title="永久修改（全局生效）"></a>永久修改（全局生效）</h3><p>通过 <code>npm config set</code> 命令修改全局配置，这是最常用的方法：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 设置淘宝镜像为默认源</span></span><br><span class="line">npm config <span class="built_in">set</span> registry https://registry.npmmirror.com</span><br><span class="line"></span><br><span class="line"><span class="comment"># 验证是否设置成功</span></span><br><span class="line">npm config get registry</span><br></pre></td></tr></table></figure><p>执行后，所有 <code>npm install</code> 都将使用国内镜像。</p><h3 id="高级管理：nrm"><a href="#高级管理：nrm" class="headerlink" title="高级管理：nrm"></a>高级管理：<code>nrm</code></h3><p>如果经常需要在多个镜像源（如官方、淘宝、公司私有源）间切换，推荐使用 <strong>nrm</strong> 工具来管理：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 1. 全局安装 nrm</span></span><br><span class="line">npm install -g nrm</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2. 查看所有可用的源（带 * 的是当前源）</span></span><br><span class="line">nrm <span class="built_in">ls</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 切换到淘宝镜像</span></span><br><span class="line">nrm use taobao</span><br><span class="line"></span><br><span class="line"><span class="comment"># 4. 验证是否设置成功</span></span><br><span class="line">npm config get registry</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>这样，只需要输入 <code>nrm use taobao</code> 或 <code>nrm use npm</code> 就能一键切换，无需记忆或输入长串地址。</p><p><strong>可以随时切换回来，或者换成其他。</strong></p><h3 id="💡-备选方案：cnpm"><a href="#💡-备选方案：cnpm" class="headerlink" title="💡 备选方案：cnpm"></a>💡 备选方案：<code>cnpm</code></h3><p>除了修改 npm 源，也可以直接安装 <code>cnpm</code> 工具，自动使用淘宝镜像，与 npm 命令基本一致：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">npm install -g cnpm --registry=https://registry.npmmirror.com</span><br><span class="line"><span class="comment"># 之后使用 cnpm 代替 npm，如：cnpm install</span></span><br></pre></td></tr></table></figure><p>按需选择最适合的方法就好。设置完后可以运行 <code>npm config get registry</code> 确认一下，新地址是 <code>https://registry.npmmirror.com/</code> 就说明成功了。</p>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-17-npm-switches-mirrors/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-17-npm-switches-mirrors/"/>
    <published>2026-08-17T06:33:48.000Z</published>
    <summary>
      <![CDATA[<h1 id="npm-切换国内镜像"><a href="#npm-切换国内镜像" class="headerlink" title="npm 切换国内镜像"></a>npm 切换国内镜像</h1><p><img src="https://cdn.jsdelivr.net/gh/]]>
    </summary>
    <title>npm switches mirrors</title>
    <updated>2026-08-18T19:52:13.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="Eleventy-模板"><a href="#Eleventy-模板" class="headerlink" title="Eleventy 模板"></a>Eleventy 模板</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_Template_brennanbrown_11ty-Indie-Web-Blog-Starter.png" alt="brennanbrown&#x2F;11ty-Indie-Web-Blog-Starter"></p><p><strong>项目名称：</strong> 11ty-Indie-Web-Blog-Starter<br><strong>适用场景：</strong> 独立网络 &#x2F; 创作者博客<br><strong>核心特点：</strong> 为参与&quot;独立网络&quot;的创作者设计，支持暗色模式、客户端搜索（FlexSearch）、Webmention、微格式等，并对可访问性做了优化。<br><strong>项目演示：</strong> <a href="https://indieweb-blog-starter.netlify.app/">indieweb-blog-starter.netlify.app</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/brennanbrown/11ty-Indie-Web-Blog-Starter">github.com&#x2F;brennanbrown&#x2F;11ty-Indie-Web-Blog-Starter</a></p><hr><h2 id="11ty-subspace-builder"><a href="#11ty-subspace-builder" class="headerlink" title="11ty-subspace-builder"></a>11ty-subspace-builder</h2><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_Template_TheClooneyCollection_11ty-subspace-builder.png" alt="TheClooneyCollection&#x2F;11ty-subspace-builder"></p><p><strong>项目名称：</strong> 11ty-subspace-builder<br><strong>适用场景：</strong> 高性能博客<br><strong>核心特点：</strong> &quot;曲速&quot;启动的博客模板，基于 Tachyons 工具类 CSS，特色是构建时生成 Open Graph 图片，并提供了 Docker 支持。<br><strong>项目演示：</strong> <a href="https://subspace-builder.nicholas.clooney.io/">subspace-builder.nicholas.clooney.io</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/TheClooneyCollection/11ty-subspace-builder">github.com&#x2F;TheClooneyCollection&#x2F;11ty-subspace-builder</a></p><hr><h2 id="11ty-template"><a href="#11ty-template" class="headerlink" title="11ty-template"></a>11ty-template</h2><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_Template_AlexKeyCodes_11ty-template.png" alt="AlexKeyCodes&#x2F;11ty-template"></p><p><strong>项目名称：</strong> 11ty-template<br><strong>适用场景：</strong> 可自定义的启动模板<br><strong>核心特点：</strong> 整合了 Nunjucks、TailwindCSS 和 SASS，并包含了导航、站点地图和文件压缩等插件。<br><strong>项目演示：</strong> <a href="https://flowbite.com/">flowbite.com</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/AlexKeyCodes/11ty-template">github.com&#x2F;AlexKeyCodes&#x2F;11ty-template</a></p><hr><h2 id="🌟-eleventy-base-blog"><a href="#🌟-eleventy-base-blog" class="headerlink" title="🌟 eleventy-base-blog"></a>🌟 eleventy-base-blog</h2><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_Template_11ty_eleventy-base-blog.png" alt="11ty&#x2F;eleventy-base-blog"></p><p><strong>项目名称：</strong> eleventy-base-blog<br><strong>适用场景：</strong> 博客新手 &amp; 通用起点<br><strong>核心特点：</strong> Eleventy 官方团队维护的博客启动器，文档齐全，会随 Eleventy 版本更新。包含 RSS、站点地图、标签和图片优化，开箱即用地实现完美的 Lighthouse 性能评分。<br><strong>项目演示：</strong> <a href="https://eleventy-base-blog.netlify.app/">eleventy-base-blog.netlify.app</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/11ty/eleventy-base-blog">github.com&#x2F;11ty&#x2F;eleventy-base-blog</a></p><hr><h2 id="🌟-Eleventy-Excellent"><a href="#🌟-Eleventy-Excellent" class="headerlink" title="🌟 Eleventy Excellent"></a>🌟 Eleventy Excellent</h2><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_Template_11ty_eleventy-excellent.png" alt="11ty&#x2F;eleventy-excellent"></p><p><strong>项目名称：</strong> Eleventy Excellent<br><strong>适用场景：</strong> 功能丰富的博客<br><strong>核心特点：</strong> 功能全面的博客&#x2F;通用型模板，开箱即用。集成了自动深色&#x2F;浅色模式、YouTube 轻量级嵌入、自动生成的 Open Graph 图片和分页归档等特性，非常&quot;省心&quot;。<br><strong>项目演示：</strong> <a href="https://eleventy-excellent.netlify.app/">eleventy-excellent.netlify.app</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/11ty/eleventy-excellent">github.com&#x2F;11ty&#x2F;eleventy-excellent</a><br><strong>GitHub 备用：</strong> <a href="https://github.com/madrilene/eleventy-excellent">github.com&#x2F;madrilene&#x2F;eleventy-excellent</a></p><hr><h2 id="eleventy-garden"><a href="#eleventy-garden" class="headerlink" title="eleventy-garden"></a>eleventy-garden</h2><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_Template_11ty_eleventy-garden.png" alt="11ty&#x2F;eleventy-garden"></p><p><strong>项目名称：</strong> eleventy-garden<br><strong>适用场景：</strong> 数字花园 &#x2F; 笔记<br><strong>核心特点：</strong> 支持双向链接和反向链接，适合构建一个互联的知识网络或公开笔记。<br><strong>项目演示：</strong> <a href="https://eleventy-garden.netlify.app/">eleventy-garden.netlify.app</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/11ty/eleventy-garden">github.com&#x2F;11ty&#x2F;eleventy-garden</a><br><strong>GitHub 备用：</strong> <a href="https://github.com/binyamin/eleventy-garden">github.com&#x2F;binyamin&#x2F;eleventy-garden</a></p><hr><h2 id="🌟-Eleventy-High-Performance-Blog"><a href="#🌟-Eleventy-High-Performance-Blog" class="headerlink" title="🌟 Eleventy High Performance Blog"></a>🌟 Eleventy High Performance Blog</h2><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_Template_google_eleventy-high-performance-blog.png" alt="google&#x2F;eleventy-high-performance-blog"></p><p><strong>项目名称：</strong> Eleventy High Performance Blog<br><strong>适用场景：</strong> 性能极限追求<br><strong>核心特点：</strong> 由谷歌工程师构建，可达到完美的 Lighthouse 分数（目前已归档，但仍是优秀参考）。<br><strong>项目演示：</strong> <a href="https://www.industrialempathy.com/posts/eleventy-high-performance-blog/">www.industrialempathy.com/posts/eleventy-high-performance-blog/</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/google/eleventy-high-performance-blog">github.com&#x2F;google&#x2F;eleventy-high-performance-blog</a></p><hr><h2 id="Eleventy-Netlify-Boilerplate"><a href="#Eleventy-Netlify-Boilerplate" class="headerlink" title="Eleventy Netlify Boilerplate"></a>Eleventy Netlify Boilerplate</h2><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_Template_danurbanowicz_eleventy-netlify-boilerplate.png" alt="danurbanowicz&#x2F;eleventy-netlify-boilerplate"></p><p><strong>项目名称：</strong> Eleventy Netlify Boilerplate<br><strong>适用场景：</strong> CMS 支持 &#x2F; 客户项目<br><strong>核心特点：</strong> 在 Netlify 上部署的经典方案，集成了 Decap CMS（原 Netlify CMS），让非技术人员也能通过友好的界面管理内容。<br><strong>项目演示：</strong> <a href="https://eleventy-netlify-boilerplate.netlify.app/">eleventy-netlify-boilerplate.netlify.app</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/danurbanowicz/eleventy-netlify-boilerplate">github.com&#x2F;danurbanowicz&#x2F;eleventy-netlify-boilerplate</a></p><hr><h2 id="eleventy-simple"><a href="#eleventy-simple" class="headerlink" title="eleventy-simple"></a>eleventy-simple</h2><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_Template_lkhrs_eleventy-simple.png" alt="lkhrs&#x2F;eleventy-simple"></p><p><strong>项目名称：</strong> eleventy-simple<br><strong>适用场景：</strong> 极简博客<br><strong>核心特点：</strong> 基于官方 Base Blog 构建，并结合了 Simple.css 框架，让你无需编写复杂 CSS 就能获得一个干净、好看的博客外观。<br><strong>项目演示：</strong> <a href="https://eleventy-simple.pages.dev/">eleventy-simple.pages.dev</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/lkhrs/eleventy-simple">github.com&#x2F;lkhrs&#x2F;eleventy-simple</a></p><hr><h2 id="Halide"><a href="#Halide" class="headerlink" title="Halide"></a>Halide</h2><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_Template_danurbanowicz_halide.png" alt="danurbanowicz&#x2F;halide"></p><p><strong>项目名称：</strong> Halide<br><strong>适用场景：</strong> 摄影 &#x2F; 作品集<br><strong>核心特点：</strong> 响应式图像作品集网站模板，与 Tina CMS 深度集成，非常适合摄影师、设计师等需要展示视觉作品的用户。<br><strong>项目演示：</strong> <a href="https://halide.netlify.app/">halide.netlify.app</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/danurbanowicz/halide">github.com&#x2F;danurbanowicz&#x2F;halide</a></p><hr><h2 id="Living-Coral"><a href="#Living-Coral" class="headerlink" title="Living Coral"></a>Living Coral</h2><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_Template_Aesculapius11_Living-Coral.png" alt="Aesculapius11&#x2F;Living-Coral"></p><p><strong>项目名称：</strong> Living Coral<br><strong>适用场景：</strong> 中文博客<br><strong>核心特点：</strong> 优雅的中文静态博客模板，基于 Eleventy 和 Tailwind CSS 构建，品牌色为&quot;活珊瑚橘&quot;。内置文章目录（TOC）、深浅色主题、Giscus 评论、音乐播放器（APlayer）等丰富特性。<br><strong>项目演示：</strong> <a href="https://living-coral.vercel.app/">living-coral.vercel.app</a><br><strong>备用演示：</strong> <a href="https://www.antares.xin/">www.antares.xin</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/Aesculapius11/Living-Coral">github.com&#x2F;Aesculapius11&#x2F;Living-Coral</a></p><hr><h2 id="Niepce"><a href="#Niepce" class="headerlink" title="Niepce"></a>Niepce</h2><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_Template_GoOz_Niepce.png" alt="GoOz&#x2F;Niepce"></p><p><strong>项目名称：</strong> Niepce<br><strong>适用场景：</strong> 摄影 &#x2F; 作品集<br><strong>核心特点：</strong> 专为摄影师和艺术家设计，支持多种图片网格布局（瀑布流、等宽等）和 EXIF 信息展示。<br><strong>项目演示：</strong> <a href="https://niepce.netlify.app/">niepce.netlify.app</a><br><strong>备用演示：</strong> <a href="https://www.antares.xin/">www.antares.xin</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/GoOz/Niepce">github.com&#x2F;GoOz&#x2F;Niepce</a></p><hr><h2 id="Retro-Garden"><a href="#Retro-Garden" class="headerlink" title="Retro Garden"></a>Retro Garden</h2><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_Template_kylereddoch_retro-garden-eleventy-theme.png" alt="kylereddoch&#x2F;retro-garden-eleventy-theme"></p><p><strong>项目名称：</strong> Retro Garden<br><strong>适用场景：</strong> 个性 &#x2F; 创意站点<br><strong>核心特点：</strong> 融合了 WebC 组件、IndieWeb 理念和复古风格，同时保持现代工具链，风格独特。<br><strong>项目演示：</strong> <a href="https://retro-garden-eleventy-theme.netlify.app/">retro-garden-eleventy-theme.netlify.app</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/kylereddoch/retro-garden-eleventy-theme">github.com&#x2F;kylereddoch&#x2F;retro-garden-eleventy-theme</a></p><hr><h2 id="Retroweird"><a href="#Retroweird" class="headerlink" title="Retroweird"></a>Retroweird</h2><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_Template_brennanbrown_retroweird.png" alt="brennanbrown&#x2F;retroweird"></p><p><strong>项目名称：</strong> Retroweird<br><strong>适用场景：</strong> 个性 &#x2F; 复古风格博客<br><strong>核心特点：</strong> 受 GeoCities、MySpace 等 Web 1.0 美学启发，内置了 6 种不同的复古主题，让你轻松回到互联网的&quot;蛮荒时代&quot;，风格独特。<br><strong>项目演示：</strong> <a href="https://retroweird.netlify.app/">retroweird.netlify.app</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/brennanbrown/retroweird">github.com&#x2F;brennanbrown&#x2F;retroweird</a></p><hr><h2 id="Subtle"><a href="#Subtle" class="headerlink" title="Subtle"></a><del>Subtle</del></h2><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_Template_11ty_eleventy-starter-subtle.png" alt="11ty&#x2F;eleventy-starter-subtle"></p><p><strong>项目名称：</strong> Subtle<br><strong>适用场景：</strong> 极简 &#x2F; 内容优先网站<br><strong>核心特点：</strong> 一个极简的 Eleventy v4 微启动器，专为内容优先的网站设计，非常轻量。<br><strong>项目演示：</strong> <a href="https://subtle-eleventy-starter.netlify.app/">subtle-eleventy-starter.netlify.app</a><br><strong>GitHub 地址：</strong> <a href="https://github.com/11ty/eleventy-starter-subtle">github.com&#x2F;11ty&#x2F;eleventy-starter-subtle</a></p>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-16-Eleventy-Template/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-16-Eleventy-Template/"/>
    <published>2026-08-16T00:50:19.000Z</published>
    <summary>
      <![CDATA[<h1 id="Eleventy-模板"><a href="#Eleventy-模板" class="headerlink" title="Eleventy 模板"></a>Eleventy 模板</h1><p><img src="https://cdn.jsdelivr.net]]>
    </summary>
    <title>Eleventy Template</title>
    <updated>2026-08-19T15:12:05.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="Eleventy-快速安装"><a href="#Eleventy-快速安装" class="headerlink" title="Eleventy 快速安装"></a>Eleventy 快速安装</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/SCG_GitHub_11ty_buildawesome.png" alt="SCG GitHub 11ty&#x2F;buildawesome"></p><h2 id="Eleventy"><a href="#Eleventy" class="headerlink" title="Eleventy"></a>Eleventy</h2><p>技术栈：Node.js<br>官方网站：<a href="https://www.11ty.dev/">11ty.dev</a><br>项目地址：<a href="https://github.com/11ty/eleventy">github.com&#x2F;11ty&#x2F;eleventy</a><br>模板演示：<a href="https://eleventy-simple.pages.dev/">eleventy-simple.pages.dev</a><br>插件演示： <a href="https://fastcomments.com/commenting-system-for-11ty">fastcomments.com&#x2F;commenting-system-for-11ty</a></p><h2 id="📝-笔记总结"><a href="#📝-笔记总结" class="headerlink" title="📝 笔记总结"></a>📝 笔记总结</h2><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 检查 Node.js 版本</span></span><br><span class="line">node <span class="literal">--version</span></span><br><span class="line"><span class="comment"># 创建项目目录</span></span><br><span class="line">mkdir eleventy<span class="literal">-sample</span></span><br><span class="line"><span class="comment"># 进入项目目录</span></span><br><span class="line"><span class="built_in">cd</span> eleventy<span class="literal">-sample</span></span><br><span class="line"><span class="comment"># 创建 package.json，-y 使用默认值跳过问卷</span></span><br><span class="line">npm init <span class="literal">-y</span></span><br><span class="line"><span class="comment"># 如果项目中使用 ESM 而不是 CommonJS</span></span><br><span class="line">npm pkg <span class="built_in">set</span> <span class="built_in">type</span>=\<span class="string">&quot;module\&quot;</span></span><br><span class="line"><span class="comment"># 安装 Eleventy 并保存到项目的 `package.json` </span></span><br><span class="line">npm install @<span class="number">11</span>ty/eleventy</span><br><span class="line"><span class="comment"># 运行本地项目版本 Eleventy</span></span><br><span class="line">npx @<span class="number">11</span>ty/eleventy</span><br><span class="line"><span class="comment"># 创建两个新的模板文件</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;&lt;!doctype html&gt;&lt;title&gt;Page title&lt;/title&gt;&lt;p&gt;Hi&lt;/p&gt;&#x27;</span> | <span class="built_in">out-file</span> <span class="literal">-encoding</span> utf8 <span class="string">&#x27;index.html&#x27;</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;# Heading&#x27;</span> | <span class="built_in">out-file</span> <span class="literal">-encoding</span> utf8 <span class="string">&#x27;README.md&#x27;</span></span><br><span class="line"><span class="comment"># 创建好模板后，再次运行 Eleventy</span></span><br><span class="line">npx @<span class="number">11</span>ty/eleventy</span><br><span class="line"><span class="comment"># --serve 启动支持热重载的本地 Web 服务器</span></span><br><span class="line">npx @<span class="number">11</span>ty/eleventy <span class="literal">--serve</span></span><br></pre></td></tr></table></figure><hr><h2 id="📖-内容来源"><a href="#📖-内容来源" class="headerlink" title="📖 内容来源"></a>📖 内容来源</h2><ul><li><a href="https://www.11ty.dev/docs/">Eleventy Documentation - Guide - Get Started</a></li></ul><hr><h2 id="🚀-快速安装"><a href="#🚀-快速安装" class="headerlink" title="🚀 快速安装"></a>🚀 快速安装</h2><h3 id="🔍-Node-js-18"><a href="#🔍-Node-js-18" class="headerlink" title="🔍 Node.js &gt; 18"></a>🔍 Node.js &gt; 18</h3><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 检查 Node.js 版本</span></span><br><span class="line">node <span class="literal">--version</span></span><br></pre></td></tr></table></figure><h3 id="📁-步骤-1：创建项目目录"><a href="#📁-步骤-1：创建项目目录" class="headerlink" title="📁 步骤 1：创建项目目录"></a>📁 步骤 1：创建项目目录</h3><p><a href="https://www.11ty.dev/docs/#step-1-make-a-project-director">step 1 make a project directory</a></p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建项目目录</span></span><br><span class="line">mkdir eleventy<span class="literal">-sample</span></span><br><span class="line"><span class="comment"># 进入项目目录</span></span><br><span class="line"><span class="built_in">cd</span> eleventy<span class="literal">-sample</span></span><br></pre></td></tr></table></figure><h3 id="📦-步骤-2：安装-Eleventy"><a href="#📦-步骤-2：安装-Eleventy" class="headerlink" title="📦 步骤 2：安装 Eleventy"></a>📦 步骤 2：安装 Eleventy</h3><p><a href="https://www.11ty.dev/docs/#step-2-install-eleventy">Step 2 Install Eleventy</a></p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建 package.json，-y 使用默认值跳过问卷</span></span><br><span class="line">npm init <span class="literal">-y</span></span><br><span class="line"><span class="comment"># 如果项目中使用 ESM 而不是 CommonJS</span></span><br><span class="line">npm pkg <span class="built_in">set</span> <span class="built_in">type</span>=\<span class="string">&quot;module\&quot;</span></span><br><span class="line"><span class="comment"># 安装 Eleventy 并保存到项目的 `package.json` </span></span><br><span class="line">npm install @<span class="number">11</span>ty/eleventy</span><br></pre></td></tr></table></figure><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_npm_init_-y.png" alt="npm init -y"></p><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_npm_install_@11ty_eleventy.png" alt="npm install @11ty&#x2F;eleventy"></p><h3 id="▶️-步骤-3：运行-Eleventy"><a href="#▶️-步骤-3：运行-Eleventy" class="headerlink" title="▶️ 步骤 3：运行 Eleventy"></a>▶️ 步骤 3：运行 Eleventy</h3><p><a href="https://www.11ty.dev/docs/#step-3-run-eleventy">Step 3 Run Eleventy</a></p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 运行本地项目版本 Eleventy</span></span><br><span class="line">npx @<span class="number">11</span>ty/eleventy</span><br></pre></td></tr></table></figure><p>运行 Eleventy 后，命令行输出：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[<span class="number">11</span><span class="type">ty</span>] Wrote <span class="number">0</span> files <span class="keyword">in</span> <span class="number">0.03</span> seconds (v3.<span class="number">1.6</span>)</span><br></pre></td></tr></table></figure><p>但是，Eleventy 没有处理任何文件，只有一个空文件夹，因为里面没有模板。</p><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_npx_@11ty_eleventy.png" alt="npx @11ty&#x2F;eleventy"></p><h3 id="📝-步骤-4：创建模板"><a href="#📝-步骤-4：创建模板" class="headerlink" title="📝 步骤 4：创建模板"></a>📝 步骤 4：创建模板</h3><p><a href="https://www.11ty.dev/docs/#step-4-create-some-templates">Step 4 Create some templates</a></p><p>模板是一种内容文件，可以使用 Markdown、HTML、Liquid、Nunjucks 等格式编写，Eleventy 在构建站点时会将其转换成一个（或多个）页面。</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建两个新的模板文件</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;&lt;!doctype html&gt;&lt;title&gt;Page title&lt;/title&gt;&lt;p&gt;Hi&lt;/p&gt;&#x27;</span> | <span class="built_in">out-file</span> <span class="literal">-encoding</span> utf8 <span class="string">&#x27;index.html&#x27;</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;# Heading&#x27;</span> | <span class="built_in">out-file</span> <span class="literal">-encoding</span> utf8 <span class="string">&#x27;README.md&#x27;</span></span><br></pre></td></tr></table></figure><ul><li>如果 <code>out-file</code> 命令在 Windows 终端窗口中不可用（PowerShell 特有的命令），改用跨平台方法。</li><li>或者使用任何文本编辑器创建模板文件。</li><li>确保保存到项目文件夹，文件扩展名正确。</li></ul><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建好模板后，再次运行 Eleventy</span></span><br><span class="line">npx @<span class="number">11</span>ty/eleventy</span><br></pre></td></tr></table></figure><p>命令行输出大致如下所示：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">[<span class="number">11</span><span class="type">ty</span>] Writing _site/README/index.html from ./README.md (liquid)</span><br><span class="line">[<span class="number">11</span><span class="type">ty</span>] Writing _site/index.html from ./index.html (liquid)</span><br><span class="line">[<span class="number">11</span><span class="type">ty</span>] Wrote <span class="number">2</span> files <span class="keyword">in</span> <span class="number">0.04</span> seconds (v3.<span class="number">1.6</span>)</span><br></pre></td></tr></table></figure><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_echo_html.png" alt="npx @11ty&#x2F;eleventy"></p><p>现在已将当前目录中的两个内容模板编译到输出文件夹中（默认为 <code>_site</code>）。</p><p>如果进一步试验模板文件语法，编辑以下示例 <code>README.md</code> 文件，其中使用了 Front Matter、Liquid 和 Markdown 语法。</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">---</span><br><span class="line"><span class="section">title: Heading</span></span><br><span class="line"><span class="section">---</span></span><br><span class="line"><span class="section"># &#123;&#123; title &#125;&#125;</span></span><br></pre></td></tr></table></figure><h3 id="👀-步骤-5：预览模板"><a href="#👀-步骤-5：预览模板" class="headerlink" title="👀 步骤 5：预览模板"></a>👀 步骤 5：预览模板</h3><p><a href="https://www.11ty.dev/docs/#step-5-gaze-upon-your-templates">Step 5 Gaze upon your templates</a></p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># --serve 启动支持热重载的本地 Web 服务器</span></span><br><span class="line">npx @<span class="number">11</span>ty/eleventy <span class="literal">--serve</span></span><br></pre></td></tr></table></figure><p>命令行输出大致如下所示：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">[<span class="number">11</span><span class="type">ty</span>] Writing _site/index.html from ./index.html (liquid)</span><br><span class="line">[<span class="number">11</span><span class="type">ty</span>] Writing _site/README/index.html from ./README.md (liquid)</span><br><span class="line">[<span class="number">11</span><span class="type">ty</span>] Wrote <span class="number">2</span> files <span class="keyword">in</span> <span class="number">0.04</span> seconds (v3.<span class="number">1.6</span>)</span><br><span class="line">[<span class="number">11</span><span class="type">ty</span>] Watching…</span><br><span class="line">[<span class="number">11</span><span class="type">ty</span>] Server at http://localhost:<span class="number">8080</span>/</span><br></pre></td></tr></table></figure><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Eleventy_npx_@11ty_eleventy_serve.png" alt="npx @11ty&#x2F;eleventy --serve"></p><p>Web 浏览器中打开：<br> <code>http://localhost:8080/</code><br> 或<br> <code>http://localhost:8080/README/</code><br> 查看 Eleventy 站点！<br>修改再次保存模板文件时，Eleventy 将自动刷新浏览器使用新的更改。</p><h3 id="🌐-步骤-6：上线（可选）"><a href="#🌐-步骤-6：上线（可选）" class="headerlink" title="🌐 步骤 6：上线（可选）"></a>🌐 步骤 6：上线（可选）</h3><p><a href="https://www.11ty.dev/docs/#step-6-put-it-online-optional">Step 6 Put it online (optional)</a></p><p>输出文件夹（<code>_site</code>）包含了网站所有的静态构建文件，可以将此文件夹上传到任何 Web 主机。</p><p>更多信息查看部署文档：<a href="https://www.11ty.dev/docs/deployment">Eleventy Documentation - Services - Deployment</a></p><h3 id="📚-步骤-7：继续学习"><a href="#📚-步骤-7：继续学习" class="headerlink" title="📚 步骤 7：继续学习"></a>📚 步骤 7：继续学习</h3><p><a href="https://www.11ty.dev/docs/#step-7-continue-learning">Step 7 Continue learning</a></p><ul><li>**添加更多内容：**试试 JavaScript、WebC（用于组件）、Nunjucks 和 Liquid。</li><li>**使用布局文件：**不必在每个模板上重复样板代码。</li><li>**添加配置文件：**以解锁 Eleventy 的高级功能。</li><li><strong>将 CSS、JavaScript 或 Web 字体</strong>添加到项目中。</li><li>**添加自动图像优化：**也非常容易。</li><li>了解更多 Eleventy 的<strong>命令行选项</strong>。</li><li>在项目中<strong>接入第三方 API 的数据</strong>。</li></ul><hr><h2 id="📖-教程和入门项目"><a href="#📖-教程和入门项目" class="headerlink" title="📖 教程和入门项目"></a>📖 教程和入门项目</h2><p><a href="https://www.11ty.dev/docs/#tutorials-and-starter-projects">Tutorials and Starter Projects</a></p><p>从零开始（了解其工作原理）或使用官方博客入门项目（更快地启动和运行）。</p>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-15-Eleventy-Quick-Setup/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-15-Eleventy-Quick-Setup/"/>
    <published>2026-08-15T09:10:38.000Z</published>
    <summary>
      <![CDATA[<h1 id="Eleventy-快速安装"><a href="#Eleventy-快速安装" class="headerlink" title="Eleventy 快速安装"></a>Eleventy 快速安装</h1><p><img src="https://cdn.jsde]]>
    </summary>
    <title>Eleventy Quick Setup</title>
    <updated>2026-08-18T22:31:02.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="GitHub-令牌分类"><a href="#GitHub-令牌分类" class="headerlink" title="GitHub 令牌分类"></a>GitHub 令牌分类</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/GitHub_Fine-grained_tokens.png" alt="GitHub Fine-grained Tokens"></p><h2 id="📝-笔记总结"><a href="#📝-笔记总结" class="headerlink" title="📝 笔记总结"></a>📝 笔记总结</h2><ul><li>个人访问令牌（Personal Access Tokens，PATs）<ul><li>细粒度个人访问令牌（Fine-grained PAT）</li><li>经典个人访问令牌（Classic PAT）</li></ul></li><li>其他用于自动化或应用集成的令牌<ul><li>GitHub Actions 内置令牌 <code>GITHUB_TOKEN</code></li><li>GitHub App 安装令牌 Installation Token</li><li>OAuth App 访问令牌</li></ul></li></ul><h2 id="📖-内容来源"><a href="#📖-内容来源" class="headerlink" title="📖 内容来源"></a>📖 内容来源</h2><ul><li><a href="https://chat.deepseek.com/share/7r8hki0fr844ov18pr">GitHub 令牌分类详解</a>（<a href="https://chat.deepseek.com/a/chat/s/517e25a6-0707-43de-8f41-31ef10e4a6dc">Deepseek</a>）</li><li><a href="https://chat.deepseek.com/share/g90gcv94we5kj5pks1">GitHub Token 分类</a>（<a href="https://chat.deepseek.com/a/chat/s/c4cb7c04-f6cd-4813-b9c7-0f69af2a394d">Deepseek</a>）</li></ul><h2 id="🌟-GitHub-令牌分类"><a href="#🌟-GitHub-令牌分类" class="headerlink" title="🌟 GitHub 令牌分类"></a>🌟 GitHub 令牌分类</h2><p>GitHub 令牌主要分为两大类：<strong>个人访问令牌（Personal Access Tokens, PATs）</strong> 和<strong>其他用于自动化或应用集成的令牌</strong>。其中，个人访问令牌又分为更安全的<strong>细粒度令牌（Fine-grained PAT）<strong>和传统的</strong>经典个人访问令牌（Classic PAT）</strong>。</p><ul><li>个人访问令牌（Personal Access Tokens，PATs）<ul><li>细粒度个人访问令牌（Fine-grained PAT）</li><li>经典个人访问令牌（Classic PAT）</li></ul></li><li>其他用于自动化或应用集成的令牌<ul><li>GitHub Actions 内置令牌 <code>GITHUB_TOKEN</code></li><li>GitHub App 安装令牌 Installation Token</li><li>OAuth App 访问令牌</li></ul></li></ul><p>汇总 GitHub 主要令牌类型及其核心区别：</p><table><thead><tr><th align="left">令牌类型</th><th align="left">前缀</th><th align="left">有效期</th><th align="left">权限范围</th><th align="left">适用场景</th></tr></thead><tbody><tr><td align="left"><strong>细粒度个人访问令牌</strong><br><strong>Fine-grained PAT</strong></td><td align="left"><code>github_pat_</code></td><td align="left">最长1年或无到期</td><td align="left">可精确到<strong>特定仓库</strong>的<strong>特定权限</strong>，如“对A仓库的contents有只读权限”</td><td align="left"><strong>推荐首选</strong>。适用于对安全性要求高的个人脚本或API调用。</td></tr><tr><td align="left"><strong>经典个人访问令牌</strong><br><strong>Classic PAT</strong></td><td align="left"><code>ghp_</code></td><td align="left">长寿命，可手动设置或自动删除</td><td align="left">粗粒度，如<code>repo</code>范围将授权用户能访问的<strong>所有仓库</strong></td><td align="left">存在安全风险，建议仅在<strong>必要时</strong>（如需要访问企业级API或特定公共仓库写入权限时）使用。</td></tr><tr><td align="left"><strong>GitHub Actions 内置令牌</strong><br><strong>GITHUB_TOKEN</strong></td><td align="left">无</td><td align="left">工作流运行期间</td><td align="left">默认只对<strong>当前仓库</strong>有读写权限，可在工作流中精确配置</td><td align="left"><strong>GitHub Actions 自动化首选</strong>。无需手动创建，安全且权限最小化。</td></tr><tr><td align="left"><strong>GitHub App 安装令牌</strong><br><strong>Installation Token</strong></td><td align="left"><code>ghs_</code></td><td align="left">1小时</td><td align="left">与App安装相关联，可访问该App有权访问的仓库</td><td align="left"><strong>推荐用于组织级自动化</strong>，如CI&#x2F;CD系统。权限隔离好，可独立于个人账号管理。</td></tr><tr><td align="left"><strong>OAuth App 访问令牌</strong></td><td align="left"><code>gho_</code></td><td align="left">长寿命</td><td align="left">由第三方OAuth App代表用户请求的权限</td><td align="left">用于将第三方Web应用或CLI工具与GitHub集成。</td></tr></tbody></table><h2 id="🛡️-核心选择建议"><a href="#🛡️-核心选择建议" class="headerlink" title="🛡️ 核心选择建议"></a>🛡️ 核心选择建议</h2><p>为什么“细粒度”比“经典”更安全？</p><p>GitHub 官方强烈推荐优先使用<strong>细粒度个人访问令牌</strong>，原因在于其安全模型有显著提升：</p><ol><li><strong>权限更精细</strong>：经典令牌的权限是粗放型的（如<code>repo</code>范围），一旦拥有，就能访问用户有权访问的所有仓库。而细粒度令牌可以精确控制到<strong>特定仓库</strong>的<strong>单个操作</strong>（如读&#x2F;写）。</li><li><strong>降低泄露风险</strong>：如果细粒度令牌泄露，攻击者能造成的破坏被限制在极小的范围内，大大缩小了“爆炸半径”。</li></ol><h2 id="⚠️-仍需使用“经典”令牌？"><a href="#⚠️-仍需使用“经典”令牌？" class="headerlink" title="⚠️ 仍需使用“经典”令牌？"></a>⚠️ 仍需使用“经典”令牌？</h2><p>由于功能迭代需要时间，在某些场景下，你仍然需要使用经典个人访问令牌：</p><ul><li>需要向<strong>自己不是成员</strong>的公共仓库贡献代码。</li><li>需要访问<strong>企业级别</strong>的资源或API。</li><li>作为<strong>外部协作者</strong>访问组织的仓库。</li></ul><h2 id="🤖-自动化场景的最佳实践"><a href="#🤖-自动化场景的最佳实践" class="headerlink" title="🤖 自动化场景的最佳实践"></a>🤖 自动化场景的最佳实践</h2><p>针对自动化任务，应遵循以下选择顺序：</p><ol><li><strong>GitHub Actions 中优先使用 <code>GITHUB_TOKEN</code></strong>：这是最安全、最便捷的方式，令牌由系统自动生成和管理，仅在当前工作流中有效。</li><li><strong>组织级自动化优先考虑 GitHub App</strong>：GitHub App 的安装令牌具有短生命周期（1小时），且权限与特定的应用安装绑定，非常适合CI&#x2F;CD等系统，比使用绑定个人账号的PAT更安全、更可控。</li><li><strong>个人脚本首选细粒度PAT</strong>：只有在上述方案都无法满足需求时，才创建个人访问令牌，并务必选择细粒度类型。</li></ol><h2 id="🔑-快速识别令牌类型"><a href="#🔑-快速识别令牌类型" class="headerlink" title="🔑 快速识别令牌类型"></a>🔑 快速识别令牌类型</h2><p>可以通过令牌的<strong>前缀</strong>来快速识别其类型：</p><ul><li><code>ghp_</code>：经典个人访问令牌</li><li><code>github_pat_</code>：细粒度个人访问令牌</li><li><code>gho_</code>：OAuth App 访问令牌</li><li><code>ghu_</code>：GitHub App 用户访问令牌</li><li><code>ghs_</code>：GitHub App 安装访问令牌</li><li><code>ghr_</code>：GitHub App 刷新令牌</li></ul>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-15-GitHub-Token/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-15-GitHub-Token/"/>
    <published>2026-08-15T01:14:14.000Z</published>
    <summary>
      <![CDATA[<h1 id="GitHub-令牌分类"><a href="#GitHub-令牌分类" class="headerlink" title="GitHub 令牌分类"></a>GitHub 令牌分类</h1><p><img src="https://cdn.jsdelivr.net]]>
    </summary>
    <title>GitHub Token</title>
    <updated>2026-08-16T17:47:01.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="GitHub-Pages-自定义域名使用-HTTPS"><a href="#GitHub-Pages-自定义域名使用-HTTPS" class="headerlink" title="GitHub Pages 自定义域名使用 HTTPS"></a>GitHub Pages 自定义域名使用 HTTPS</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/GitHub_Custom_Domain.png" alt="GitHub Custom Domain"></p><h2 id="📝-笔记总结"><a href="#📝-笔记总结" class="headerlink" title="📝 笔记总结"></a>📝 笔记总结</h2><p>子域名最好使用 <code>CNAME</code> 解析，不过有的就是无法使用 <code>Enforce HTTPS</code> 暂时未能解决，不如部署到其他服务商更为方便。</p><h2 id="❌-选项-Enforce-HTTPS-勾不上"><a href="#❌-选项-Enforce-HTTPS-勾不上" class="headerlink" title="❌ 选项 Enforce HTTPS 勾不上"></a>❌ 选项 <code>Enforce HTTPS</code> 勾不上</h2><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/GitHub_Custom_Domain_Enforce_HTTPS.png" alt="GitHub Custom Domain Enforce HTTPS "></p><p>错误信息通常源于DNS解析记录类型与平台要求不匹配，导致系统无法正确识别并路由站点。</p><blockquote><p>docus.shenjuexiao.com is improperly configured<br>Your site’s DNS settings are using a custom subdomain, docus-public.shenjuexiao.com, that is set up as an A record. We recommend you change this to a CNAME record pointing to shenjuexiao.com. For more information, see documentation (InvalidARecordError).</p></blockquote><p>问题原因（InvalidARecordError）：域名 docus.shenjuexiao.com 当前在DNS设置中被配置为 A记录（即直接指向一个固定的IP地址）。大多数 SaaS 平台或托管服务要求自定义子域名必须使用 <code>CNAME</code> 记录，以便将流量指向服务商提供的特定域名（如 <code>shenjuexiao.com</code>）。</p><h2 id="⚡-解决方案"><a href="#⚡-解决方案" class="headerlink" title="⚡ 解决方案"></a>⚡ 解决方案</h2><p>需要登录域名所在的DNS管理后台，将子域名的A记录删除，并新建一条CNAME记录。通常CNAME记录的目标值应填写为主域名或服务商提供的特定别名地址。</p><p>操作前的关键注意事项：</p><ul><li>确认目标地址：建议先检查平台后台（如 Vercel、Netlify 等）提供的具体 <code>CNAME</code> 目标值，以确保完全匹配。</li><li>检查其他记录：如果该子域名下存在其他记录（如 <code>TXT</code> 或 <code>MX</code> ），需要确认是否需要保留，以免影响邮件或验证功能。</li><li>生效时间：<code>DNS</code> 修改后通常需要几分钟到几小时不等才能全球生效，请耐心等待。</li></ul><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/GitHub_Custom_DNS_Check_Successful.png" alt="GitHub Custom DNS Check Successful"></p><p>如果你不清楚具体的DNS管理后台在哪里，可以查看域名注册商（如阿里云、腾讯云、GoDaddy 等）的文档；如果不确定 <code>CNAME</code> 的具体目标值，建议检查当前托管平台（Netlify&#x2F;Vercel 等）后台的 <code>Domain</code> 或 <code>Site settings</code> 页面。</p>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-14-GitHub-Pages-Custom-Domain-Enforce-HTTPS/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-14-GitHub-Pages-Custom-Domain-Enforce-HTTPS/"/>
    <published>2026-08-14T08:31:01.000Z</published>
    <summary>
      <![CDATA[<h1 id="GitHub-Pages-自定义域名使用-HTTPS"><a href="#GitHub-Pages-自定义域名使用-HTTPS" class="headerlink" title="GitHub Pages 自定义域名使用 HTTPS"></a>GitHub P]]>
    </summary>
    <title>GitHub Pages Custom Domain Enforce HTTPS</title>
    <updated>2026-08-16T17:46:46.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="静态代码生成器（SCG）列表"><a href="#静态代码生成器（SCG）列表" class="headerlink" title="静态代码生成器（SCG）列表"></a>静态代码生成器（SCG）列表</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/SCG_Static_Code_Generation_List_1800.png" alt="SCG (Static Code Generation) List"></p><h2 id="📝-持续更新"><a href="#📝-持续更新" class="headerlink" title="📝 持续更新"></a>📝 持续更新</h2><p>&quot;静态代码生成&quot;在当前语境下通常指向两类工具：一是用于生成网站HTML的静态站点生成器（Static Site Generator，SSG），例如Hugo、Gatsby；二是更广义的代码生成器（Code Generator），例如T4、CodeSmith，用于生成各类编程语言的源代码。本列表主要聚焦于前者，并补充了一些其他类型的代表。</p><p>💡 同步更新：<a href="https://github.com/shenjuexiao/SCG-list#scg-list">github.com&#x2F;shenjuexiao&#x2F;SCG-list</a></p><p>🔍 更多查找：<a href="https://jamstack.org/generators">jamstack.org</a></p><h2 id="🍎-A"><a href="#🍎-A" class="headerlink" title="🍎 A"></a>🍎 A</h2><h3 id="Amazon-CodeWhisperer"><a href="#Amazon-CodeWhisperer" class="headerlink" title="Amazon CodeWhisperer"></a>Amazon CodeWhisperer</h3><ul><li>技术栈：多种编程语言，AI</li><li>官方网站：<a href="https://aws.amazon.com/cn/codewhisperer">aws.amazon.com&#x2F;cn&#x2F;codewhisperer</a></li><li>项目地址：商业产品</li><li>Demo：<a href="https://aws.amazon.com/cn/codewhisperer/resources">aws.amazon.com&#x2F;cn&#x2F;codewhisperer&#x2F;resources</a></li></ul><h3 id="Astro"><a href="#Astro" class="headerlink" title="Astro"></a>Astro</h3><ul><li>技术栈：Astro (多框架兼容)</li><li>官方网站：<a href="https://astro.build/">astro.build</a></li><li>项目地址：<a href="https://github.com/withastro/astro">github.com&#x2F;withastro&#x2F;astro</a></li><li>Demo：<a href="https://astro.build/showcase">astro.build&#x2F;showcase</a></li></ul><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/SCG_GitHub_withastro_astro.png" alt="SCG GitHub withastro astro"></p><h2 id="🐈-C"><a href="#🐈-C" class="headerlink" title="🐈 C"></a>🐈 C</h2><h3 id="CodeSmith"><a href="#CodeSmith" class="headerlink" title="CodeSmith"></a>CodeSmith</h3><ul><li>技术栈：.NET，C#</li><li>官方网站：<a href="https://www.codesmithtools.com/">codesmithtools.com</a></li><li>项目地址：商业软件</li><li>Demo：<a href="https://www.codesmithtools.com/generator">codesmithtools.com&#x2F;generator</a></li></ul><h2 id="🐕-D"><a href="#🐕-D" class="headerlink" title="🐕 D"></a>🐕 D</h2><h3 id="Docusaurus"><a href="#Docusaurus" class="headerlink" title="Docusaurus"></a>Docusaurus</h3><ul><li>技术栈：React，Node.js</li><li>官方网站：<a href="https://docusaurus.io/">docusaurus.io</a></li><li>项目地址：<a href="https://github.com/facebook/docusaurus">github.com&#x2F;facebook&#x2F;docusaurus</a></li><li>Demo：<a href="https://docusaurus.io/showcase">docusaurus.io&#x2F;showcase</a></li></ul><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/SCG_GitHub_facebook_docusaurus.png" alt="SCG GitHub facebook docusaurus"></p><h2 id="🐘-E"><a href="#🐘-E" class="headerlink" title="🐘 E"></a>🐘 E</h2><h3 id="Eleventy"><a href="#Eleventy" class="headerlink" title="Eleventy"></a>Eleventy</h3><p>技术栈：Node.js<br>官方网站：<a href="https://www.11ty.dev/">11ty.dev</a><br>项目地址：<a href="https://github.com/11ty/eleventy">github.com&#x2F;11ty&#x2F;eleventy</a><br>模板演示：<a href="https://eleventy-simple.pages.dev/">eleventy-simple.pages.dev</a><br>插件演示： <a href="https://fastcomments.com/commenting-system-for-11ty">fastcomments.com&#x2F;commenting-system-for-11ty</a></p><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/SCG_GitHub_11ty_buildawesome.png" alt="SCG GitHub 11ty&#x2F;buildawesome"></p><h3 id="Excalidraw-手绘风格-AI"><a href="#Excalidraw-手绘风格-AI" class="headerlink" title="Excalidraw (手绘风格 + AI)"></a>Excalidraw (手绘风格 + AI)</h3><ul><li>技术栈：TypeScript，React</li><li>官方网站：<a href="https://excalidraw.com/">excalidraw.com</a></li><li>项目地址：<a href="https://github.com/excalidraw/excalidraw">github.com&#x2F;excalidraw&#x2F;excalidraw</a></li><li>Demo：<a href="https://excalidraw.com/">excalidraw.com</a> (可直接在线使用)</li></ul><h2 id="🐟-F"><a href="#🐟-F" class="headerlink" title="🐟 F"></a>🐟 F</h2><h3 id="Figma-to-Code-AI插件"><a href="#Figma-to-Code-AI插件" class="headerlink" title="Figma to Code (AI插件)"></a>Figma to Code (AI插件)</h3><ul><li>技术栈：Figma API，AI</li><li>官方网站：<a href="https://www.figma.com/community/plugins">figma.com&#x2F;community&#x2F;plugins</a></li><li>项目地址：搜索&quot;Figma to HTML&quot;等关键词</li><li>Demo：<a href="https://www.figma.com/community/plugins/1024120532071138593">figma.com&#x2F;community&#x2F;plugins&#x2F;1024120532071138593</a></li></ul><h2 id="🐐-G"><a href="#🐐-G" class="headerlink" title="🐐 G"></a>🐐 G</h2><h3 id="Gatsby"><a href="#Gatsby" class="headerlink" title="Gatsby"></a>Gatsby</h3><ul><li>技术栈：React，GraphQL</li><li>官方网站：<a href="https://www.gatsbyjs.com/">gatsbyjs.com</a></li><li>项目地址：<a href="https://github.com/gatsbyjs/gatsby">github.com&#x2F;gatsbyjs&#x2F;gatsby</a></li><li>Demo：<a href="https://www.gatsbyjs.com/starters">gatsbyjs.com&#x2F;starters</a></li></ul><h3 id="GitHub-Copilot"><a href="#GitHub-Copilot" class="headerlink" title="GitHub Copilot"></a>GitHub Copilot</h3><ul><li>技术栈：多种编程语言，AI</li><li>官方网站：<a href="https://github.com/features/copilot">github.com&#x2F;features&#x2F;copilot</a></li><li>项目地址：商业产品</li><li>Demo：<a href="https://github.com/features/copilot">github.com&#x2F;features&#x2F;copilot</a></li></ul><h2 id="🐴-H"><a href="#🐴-H" class="headerlink" title="🐴 H"></a>🐴 H</h2><h3 id="Hexo"><a href="#Hexo" class="headerlink" title="Hexo"></a>Hexo</h3><ul><li>技术栈：Node.js</li><li>官方网站：<a href="https://hexo.io/">hexo.io</a></li><li>项目地址：<a href="https://github.com/hexojs/hexo">github.com&#x2F;hexojs&#x2F;hexo</a></li><li>Demo：<a href="https://hexo.io/showcase">hexo.io&#x2F;showcase</a></li></ul><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/SCG_GitHub_hexojs_hexo.png" alt="github.com&#x2F;hexojs&#x2F;hexo"></p><h3 id="Hugo"><a href="#Hugo" class="headerlink" title="Hugo"></a>Hugo</h3><ul><li>技术栈：Go</li><li>官方网站：<a href="https://gohugo.io/">gohugo.io</a></li><li>项目地址：<a href="https://github.com/gohugoio/hugo">github.com&#x2F;gohugoio&#x2F;hugo</a></li><li>Demo：<a href="https://gohugo.io/showcase">gohugo.io&#x2F;showcase</a></li></ul><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/SCG_GitHub_gohugoio_hugo.png" alt="github.com&#x2F;gohugoio&#x2F;hugo"></p><h2 id="🃏-J"><a href="#🃏-J" class="headerlink" title="🃏 J"></a>🃏 J</h2><h3 id="Jekyll"><a href="#Jekyll" class="headerlink" title="Jekyll"></a>Jekyll</h3><ul><li>技术栈：Ruby</li><li>官方网站：<a href="https://jekyllrb.com/">jekyllrb.com</a></li><li>项目地址：<a href="https://github.com/jekyll/jekyll">github.com&#x2F;jekyll&#x2F;jekyll</a></li><li>Demo：<a href="https://jekyllrb.com/showcase">jekyllrb.com&#x2F;showcase</a></li></ul><h2 id="🥜-N"><a href="#🥜-N" class="headerlink" title="🥜 N"></a>🥜 N</h2><h3 id="Next-js-SSG模式"><a href="#Next-js-SSG模式" class="headerlink" title="Next.js (SSG模式)"></a>Next.js (SSG模式)</h3><ul><li>技术栈：React，Node.js</li><li>官方网站：<a href="https://nextjs.org/">nextjs.org</a></li><li>项目地址：<a href="https://github.com/vercel/next.js">github.com&#x2F;vercel&#x2F;next.js</a></li><li>Demo：<a href="https://nextjs.org/showcase">nextjs.org&#x2F;showcase</a></li></ul><h2 id="🦉-O"><a href="#🦉-O" class="headerlink" title="🦉 O"></a>🦉 O</h2><h3 id="OpenAPI-Generator"><a href="#OpenAPI-Generator" class="headerlink" title="OpenAPI Generator"></a>OpenAPI Generator</h3><ul><li>技术栈：Java，OpenAPI</li><li>官方网站：<a href="https://openapi-generator.tech/">openapi-generator.tech</a></li><li>项目地址：<a href="https://github.com/OpenAPITools/openapi-generator">github.com&#x2F;OpenAPITools&#x2F;openapi-generator</a></li><li>Demo：<a href="https://openapi-generator.tech/docs/online">openapi-generator.tech&#x2F;docs&#x2F;online</a></li></ul><h2 id="🐧-P"><a href="#🐧-P" class="headerlink" title="🐧 P"></a>🐧 P</h2><h3 id="Pelican"><a href="#Pelican" class="headerlink" title="Pelican"></a>Pelican</h3><ul><li>技术栈：Python</li><li>官方网站：<a href="https://getpelican.com/">getpelican.com</a></li><li>项目地址：<a href="https://github.com/getpelican/pelican">github.com&#x2F;getpelican&#x2F;pelican</a></li><li>Demo：<a href="https://github.com/getpelican/pelican/wiki/Powered-by-Pelican">github.com&#x2F;getpelican&#x2F;pelican&#x2F;wiki&#x2F;Powered-by-Pelican</a></li></ul><h2 id="🐍-S"><a href="#🐍-S" class="headerlink" title="🐍 S"></a>🐍 S</h2><h3 id="Swagger-Codegen"><a href="#Swagger-Codegen" class="headerlink" title="Swagger Codegen"></a>Swagger Codegen</h3><ul><li>技术栈：Java，OpenAPI</li><li>官方网站：<a href="https://swagger.io/tools/swagger-codegen">swagger.io&#x2F;tools&#x2F;swagger-codegen</a></li><li>项目地址：<a href="https://github.com/swagger-api/swagger-codegen">github.com&#x2F;swagger-api&#x2F;swagger-codegen</a></li><li>Demo：<a href="https://generator.swagger.io/">generator.swagger.io</a></li></ul><h2 id="🐯-T"><a href="#🐯-T" class="headerlink" title="🐯 T"></a>🐯 T</h2><h3 id="T4-Text-Template-Transformation-Toolkit"><a href="#T4-Text-Template-Transformation-Toolkit" class="headerlink" title="T4 (Text Template Transformation Toolkit)"></a>T4 (Text Template Transformation Toolkit)</h3><ul><li>技术栈：.NET，C#</li><li>官方网站：<a href="https://docs.microsoft.com/en-us/visualstudio/modeling/code-generation-and-t4-text-templates">docs.microsoft.com&#x2F;en-us&#x2F;visualstudio&#x2F;modeling&#x2F;code-generation-and-t4-text-templates</a></li><li>项目地址：内置于Visual Studio</li><li>Demo：<a href="https://docs.microsoft.com/en-us/visualstudio/modeling/writing-a-t4-text-template">docs.microsoft.com&#x2F;en-us&#x2F;visualstudio&#x2F;modeling&#x2F;writing-a-t4-text-template</a></li></ul><h3 id="tldraw-白板生成代码"><a href="#tldraw-白板生成代码" class="headerlink" title="tldraw (白板生成代码)"></a>tldraw (白板生成代码)</h3><ul><li>技术栈：TypeScript，React</li><li>官方网站：<a href="https://tldraw.com/">tldraw.com</a></li><li>项目地址：<a href="https://github.com/tldraw/tldraw">github.com&#x2F;tldraw&#x2F;tldraw</a></li><li>Demo：<a href="https://examples.tldraw.com/">examples.tldraw.com</a></li></ul><h2 id="🦄-V"><a href="#🦄-V" class="headerlink" title="🦄 V"></a>🦄 V</h2><h3 id="v0-dev-Vercel出品"><a href="#v0-dev-Vercel出品" class="headerlink" title="v0.dev (Vercel出品)"></a>v0.dev (Vercel出品)</h3><ul><li>技术栈：React，Tailwind CSS，AI</li><li>官方网站：<a href="https://v0.dev/">v0.dev</a></li><li>项目地址：闭源商业产品</li><li>Demo：<a href="https://v0.dev/">v0.dev</a> (可直接在线使用)</li></ul><h3 id="VuePress"><a href="#VuePress" class="headerlink" title="VuePress"></a>VuePress</h3><ul><li>技术栈：Vue.js</li><li>官方网站：<a href="https://vuepress.vuejs.org/">vuepress.vuejs.org</a></li><li>项目地址：<a href="https://github.com/vuejs/vuepress">github.com&#x2F;vuejs&#x2F;vuepress</a></li><li>Demo：<a href="https://vuepress.vuejs.org/guide">vuepress.vuejs.org&#x2F;guide</a></li></ul><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/SCG_GitHub_vuejs_vuepress.png" alt="SCG GitHub vuejs vuepress"></p><h2 id="🦓-Z"><a href="#🦓-Z" class="headerlink" title="🦓 Z"></a>🦓 Z</h2><h3 id="Zola"><a href="#Zola" class="headerlink" title="Zola"></a>Zola</h3><ul><li>技术栈：Rust</li><li>官方网站：<a href="https://www.getzola.org/">getzola.org</a></li><li>项目地址：<a href="https://github.com/getzola/zola">github.com&#x2F;getzola&#x2F;zola</a></li><li>Demo：<a href="https://www.getzola.org/documentation">getzola.org&#x2F;documentation</a></li></ul><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/SCG_GitHub_getzola_zola.png" alt="SCG GitHub getzola zola"></p>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-14-SCG-Static-Code-Generation-List/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-14-SCG-Static-Code-Generation-List/"/>
    <published>2026-08-14T07:25:59.000Z</published>
    <summary>
      <![CDATA[<h1 id="静态代码生成器（SCG）列表"><a href="#静态代码生成器（SCG）列表" class="headerlink" title="静态代码生成器（SCG）列表"></a>静态代码生成器（SCG）列表</h1><p><img src="https://cdn.]]>
    </summary>
    <title>SCG (Static Code Generation) List</title>
    <updated>2026-08-19T08:18:50.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="Idea-Note-笔记应用"><a href="#Idea-Note-笔记应用" class="headerlink" title="Idea-Note 笔记应用"></a>Idea-Note 笔记应用</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/GitHub_Liubsyy_idea-note.png" alt="GitHub Liubsyy idea-note"></p><h2 id="📝-笔记总结"><a href="#📝-笔记总结" class="headerlink" title="📝 笔记总结"></a>📝 笔记总结</h2><p>安装绿色版比较方便，同步功能实用性强，对于习惯左右分栏预览来说还是有点不自在，尤其是空行不是那么明显。可能是我比较喜欢在线版的 Markdown 编辑器。</p><h2 id="📖-内容来源"><a href="#📖-内容来源" class="headerlink" title="📖 内容来源"></a>📖 内容来源</h2><blockquote><p>Idea Note 是一款轻量简洁的笔记应用，包含 Markdown 编辑器、文件管理器、 AI 笔记助手，支持Git远程同步，兼容 Windows、MacOS 和 Linux 平台。</p></blockquote><ul><li>官方网站：<a href="https://github.com/Liubsyy/idea-note">github.com&#x2F;Liubsyy&#x2F;idea-note</a></li><li>项目地址：<a href="https://github.com/Liubsyy/idea-note">github.com&#x2F;Liubsyy&#x2F;idea-note</a></li><li>技术栈：TypeScript</li></ul><h2 id="⚡-功能特性"><a href="#⚡-功能特性" class="headerlink" title="⚡ 功能特性"></a>⚡ 功能特性</h2><ul><li>Markdown 编辑器：所见即所得实时预览，支持 CommonMark + GFM、KaTeX 公式、Mermaid流程图、HTML &#x2F; SVG 渲染、源码模式、多标签页和格式工具栏。</li><li>文件管理：除markdown外还可编辑其他文本文件，可作为轻量级项目文件管理器。</li><li>AI 笔记助手：用自然语言对当前笔记进行问答、总结、润色，并通过工具直接读取、搜索、新建、编辑或删除笔记。</li><li>Git 同步与历史：支持自动提交、远程推拉、本地版本记录、单文件 &#x2F; 全局历史和 diff 对比。</li><li>内置终端：集成终端，可在应用内直接执行命令。</li><li>其他特性：支持PDF导出和打印、切换主题、自定义字体字号间距。</li></ul>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-13-Liubsyy-Idea-Note/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-13-Liubsyy-Idea-Note/"/>
    <published>2026-08-13T07:29:15.000Z</published>
    <summary>
      <![CDATA[<h1 id="Idea-Note-笔记应用"><a href="#Idea-Note-笔记应用" class="headerlink" title="Idea-Note 笔记应用"></a>Idea-Note 笔记应用</h1><p><img src="https://cdn.]]>
    </summary>
    <title>Liubsyy Idea-Note</title>
    <updated>2026-08-16T17:45:25.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="Hexo-四种部署方式"><a href="#Hexo-四种部署方式" class="headerlink" title="Hexo 四种部署方式"></a>Hexo 四种部署方式</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/4_Ways_to_Deploy_Hexo.png" alt="4 Ways to Deploy Hexo"></p><h2 id="🌐-快速安装"><a href="#🌐-快速安装" class="headerlink" title="🌐 快速安装"></a>🌐 快速安装</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 安装 Node.js 版本需不低于 10.13</span></span><br><span class="line"><span class="comment"># 建议使用 Node.js 12.0 及以上版本</span></span><br><span class="line"><span class="comment"># 安装 Git</span></span><br><span class="line"><span class="comment"># npm 安装 Hexo</span></span><br><span class="line">npm install -g hexo-cli</span><br><span class="line"></span><br><span class="line"><span class="comment"># Hexo 初始化</span></span><br><span class="line">hexo init &lt;folder&gt;</span><br><span class="line"><span class="built_in">cd</span> &lt;folder&gt;</span><br><span class="line">npm install</span><br></pre></td></tr></table></figure><h2 id="1️⃣-部署本仓库-GitHub-Actions-（官方推荐）"><a href="#1️⃣-部署本仓库-GitHub-Actions-（官方推荐）" class="headerlink" title="1️⃣ 部署本仓库 GitHub Actions （官方推荐）"></a>1️⃣ 部署本仓库 GitHub Actions （官方推荐）</h2><p><a href="https://hexo.io/zh-cn/docs/github-pages">在 GitHub Pages 上部署 Hexo</a></p><ul><li><code>.gitignore</code> 文件中包含一行 <code>public/</code></li><li>自定义域名需要在 <code>source/</code> 文件夹中新增 <code>CNAME</code></li><li>建立 <code>.github/workflows/pages.yml</code></li><li>本地检查 <code>node --version</code>，替换版本</li><li>将 main 分支 push 到远程仓库</li><li>远程仓库  <code>Settings</code> -&gt; <code>Pages</code> -&gt; <code>Source</code> -&gt; <code>GitHub Actions</code></li></ul><h3 id="官方版本"><a href="#官方版本" class="headerlink" title="官方版本"></a>官方版本</h3><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">.github/workflows/pages.yml</span></span><br><span class="line"><span class="attr">name:</span> <span class="string">Pages</span></span><br><span class="line"></span><br><span class="line"><span class="attr">on:</span></span><br><span class="line">  <span class="attr">push:</span></span><br><span class="line">    <span class="attr">branches:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">main</span> <span class="comment"># default branch</span></span><br><span class="line"></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">build:</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/checkout@v4</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">token:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.GITHUB_TOKEN</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="comment"># If your repository depends on submodule, please see: https://github.com/actions/checkout</span></span><br><span class="line">          <span class="attr">submodules:</span> <span class="string">recursive</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Use</span> <span class="string">Node.js</span> <span class="number">20</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/setup-node@v4</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="comment"># Examples: 20, 18.19, &gt;=16.20.2, lts/Iron, lts/Hydrogen, *, latest, current, node</span></span><br><span class="line">          <span class="comment"># Ref: https://github.com/actions/setup-node#supported-version-syntax</span></span><br><span class="line">          <span class="attr">node-version:</span> <span class="string">\&quot;20\&quot;</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Cache</span> <span class="string">NPM</span> <span class="string">dependencies</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/cache@v4</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">path:</span> <span class="string">node_modules</span></span><br><span class="line">          <span class="attr">key:</span> <span class="string">$&#123;&#123;</span> <span class="string">runner.OS</span> <span class="string">&#125;&#125;-npm-cache</span></span><br><span class="line">          <span class="attr">restore-keys:</span> <span class="string">|</span></span><br><span class="line"><span class="string">            $&#123;&#123; runner.OS &#125;&#125;-npm-cache</span></span><br><span class="line"><span class="string"></span>      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Install</span> <span class="string">Dependencies</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">npm</span> <span class="string">install</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Build</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">npm</span> <span class="string">run</span> <span class="string">build</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Upload</span> <span class="string">Pages</span> <span class="string">artifact</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/upload-pages-artifact@v3</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">path:</span> <span class="string">./public</span></span><br><span class="line">  <span class="attr">deploy:</span></span><br><span class="line">    <span class="attr">needs:</span> <span class="string">build</span></span><br><span class="line">    <span class="attr">permissions:</span></span><br><span class="line">      <span class="attr">pages:</span> <span class="string">write</span></span><br><span class="line">      <span class="attr">id-token:</span> <span class="string">write</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="attr">name:</span> <span class="string">github-pages</span></span><br><span class="line">      <span class="attr">url:</span> <span class="string">$&#123;&#123;</span> <span class="string">steps.deployment.outputs.page_url</span> <span class="string">&#125;&#125;</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Deploy</span> <span class="string">to</span> <span class="string">GitHub</span> <span class="string">Pages</span></span><br><span class="line">        <span class="attr">id:</span> <span class="string">deployment</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/deploy-pages@v4</span></span><br></pre></td></tr></table></figure><h3 id="简化版"><a href="#简化版" class="headerlink" title="简化版"></a>简化版</h3><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/simple-hexo-deploy-actions.png" alt="name: simple-hexo-deploy-actions"></p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># .github/workflows/simple-hexo-deploy-actions.yml</span></span><br><span class="line"><span class="attr">name:</span> <span class="string">simple-hexo-deploy-actions</span></span><br><span class="line"></span><br><span class="line"><span class="attr">on:</span></span><br><span class="line">  <span class="attr">push:</span></span><br><span class="line">    <span class="attr">branches:</span> [ <span class="string">main</span> ]</span><br><span class="line">  <span class="attr">workflow_dispatch:</span></span><br><span class="line"></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">build:</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/checkout@v4</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">submodules:</span> <span class="string">recursive</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/setup-node@v4</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">node-version:</span> <span class="string">\&quot;20\&quot;</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/cache@v4</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">path:</span> <span class="string">node_modules</span></span><br><span class="line">          <span class="attr">key:</span> <span class="string">$&#123;&#123;</span> <span class="string">runner.OS</span> <span class="string">&#125;&#125;-npm-cache</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">run:</span> <span class="string">npm</span> <span class="string">install</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">run:</span> <span class="string">npm</span> <span class="string">run</span> <span class="string">build</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/upload-pages-artifact@v3</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">path:</span> <span class="string">./public</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">deploy:</span></span><br><span class="line">    <span class="attr">needs:</span> <span class="string">build</span></span><br><span class="line">    <span class="attr">permissions:</span></span><br><span class="line">      <span class="attr">pages:</span> <span class="string">write</span></span><br><span class="line">      <span class="attr">id-token:</span> <span class="string">write</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="attr">name:</span> <span class="string">github-pages</span></span><br><span class="line">      <span class="attr">url:</span> <span class="string">$&#123;&#123;</span> <span class="string">steps.deployment.outputs.page_url</span> <span class="string">&#125;&#125;</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/deploy-pages@v4</span></span><br><span class="line">        <span class="attr">id:</span> <span class="string">deployment</span></span><br></pre></td></tr></table></figure><h2 id="2️⃣-一键部署"><a href="#2️⃣-一键部署" class="headerlink" title="2️⃣ 一键部署"></a>2️⃣ 一键部署</h2><p><a href="https://hexo.io/zh-cn/docs/one-command-deployment">一键部署</a></p><ul><li>安装 hexo-deployer-git</li></ul><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">npm</span> <span class="string">install</span> <span class="string">hexo-deployer-git</span> <span class="string">--save</span></span><br></pre></td></tr></table></figure><ul><li>编辑 _config.yml （示例值）</li></ul><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">deploy:</span></span><br><span class="line">  <span class="attr">type:</span> <span class="string">git</span></span><br><span class="line">  <span class="attr">repo:</span> <span class="string">&lt;repository</span> <span class="string">url&gt;</span> <span class="comment"># https://bitbucket.org/JohnSmith/johnsmith.bitbucket.io</span></span><br><span class="line">  <span class="attr">branch:</span> [<span class="string">branch</span>]</span><br><span class="line">  <span class="attr">message:</span> [<span class="string">message</span>]</span><br></pre></td></tr></table></figure><h2 id="3️⃣-部署本仓库-gh-pages"><a href="#3️⃣-部署本仓库-gh-pages" class="headerlink" title="3️⃣ 部署本仓库 gh-pages"></a>3️⃣ 部署本仓库 gh-pages</h2><h3 id="使用-Personal-Access-Token-PAT"><a href="#使用-Personal-Access-Token-PAT" class="headerlink" title="使用 Personal Access Token (PAT)"></a>使用 Personal Access Token (PAT)</h3><ul><li>步骤1：创建 <code>Personal Access Token</code><br>点击 GitHub 右上角头像 → <code>Settings</code>，左侧菜单选择 <code>Developer settings</code> → <code>Personal access tokens</code> → <code>Tokens (classic)</code>，点击 <code>Generate new token (classic)</code></li></ul><p>设置：<br>Note: 填写名称（如 &quot;gh-pages-deploy&quot;）<br>Expiration: 选择合适的时间<br>Scopes: 勾选 repo（完整权限）<br>生成并复制 token（只显示一次，务必保存）</p><ul><li><p>步骤2：在仓库中添加 <code>Secret</code><br>进入你的仓库 <code>Settings</code> → <code>Secrets and variables</code> → <code>Actions</code>，点击 <code>New repository secret</code>，<br>Name: PERSONAL_TOKEN<br>Secret: 粘贴你复制的 token</p></li><li><p>步骤3：修改 <code>workflow</code> 文件</p></li></ul><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Deploy</span> <span class="string">to</span> <span class="string">GitHub</span> <span class="string">Pages</span></span><br><span class="line">  <span class="attr">uses:</span> <span class="string">peaceiris/actions-gh-pages@v4</span></span><br><span class="line">  <span class="attr">with:</span></span><br><span class="line">    <span class="comment"># 使用 PAT 而不是 GITHUB_TOKEN</span></span><br><span class="line">    <span class="attr">personal_token:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.PERSONAL_TOKEN</span> <span class="string">&#125;&#125;</span></span><br><span class="line">    <span class="comment"># 或者你的构建输出目录</span></span><br><span class="line">    <span class="attr">publish_dir:</span> <span class="string">./build</span></span><br><span class="line">    <span class="attr">publish_branch:</span> <span class="string">gh-pages</span></span><br></pre></td></tr></table></figure><h3 id="简化版-1"><a href="#简化版-1" class="headerlink" title="简化版"></a>简化版</h3><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/simple-hexo-deploy-pages.png" alt="name: simple-hexo-deploy-pages"></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br></pre></td><td class="code"><pre><span class="line"># .github/workflows/simple-hexo-deploy-pages.yml</span><br><span class="line">name: simple-hexo-deploy-pages</span><br><span class="line"></span><br><span class="line">on:</span><br><span class="line">  push:</span><br><span class="line">    branches: [ main ]</span><br><span class="line">  workflow_dispatch:</span><br><span class="line">  </span><br><span class="line">jobs:</span><br><span class="line">  build:</span><br><span class="line">    runs-on: ubuntu-latest</span><br><span class="line">    steps:</span><br><span class="line">      - uses: actions/checkout@v4</span><br><span class="line">        with:</span><br><span class="line">          submodules: recursive</span><br><span class="line">      - uses: actions/setup-node@v4</span><br><span class="line">        with:</span><br><span class="line">          node-version: \&quot;20\&quot;</span><br><span class="line">      - uses: actions/cache@v4</span><br><span class="line">        with:</span><br><span class="line">          path: node_modules</span><br><span class="line">          key: $&#123;&#123; runner.OS &#125;&#125;-npm-cache</span><br><span class="line">      - run: npm install</span><br><span class="line">      - run: npm run build</span><br><span class="line">      - uses: actions/upload-artifact@v4</span><br><span class="line">        with:</span><br><span class="line">          name: public</span><br><span class="line">          path: $&#123;&#123; github.workspace &#125;&#125;/public</span><br><span class="line">          retention-days: 1</span><br><span class="line"></span><br><span class="line">  deploy:</span><br><span class="line">    needs: build</span><br><span class="line">    permissions:</span><br><span class="line">      pages: write</span><br><span class="line">      id-token: write</span><br><span class="line">    environment:</span><br><span class="line">      name: github-pages</span><br><span class="line">      url: $&#123;&#123; steps.deployment.outputs.page_url &#125;&#125;</span><br><span class="line">    runs-on: ubuntu-latest</span><br><span class="line">    steps:</span><br><span class="line">      - uses: actions/download-artifact@v4</span><br><span class="line">        with:</span><br><span class="line">          name: public</span><br><span class="line">          path: ./public</span><br><span class="line">      - uses: peaceiris/actions-gh-pages@v4</span><br><span class="line">        with:</span><br><span class="line">          personal_token: $&#123;&#123; secrets.PERSONAL_TOKEN &#125;&#125;</span><br><span class="line">          external_repository: $&#123;&#123; github.respository &#125;&#125;</span><br><span class="line">          publish_branch: gh-pages</span><br><span class="line">          publish_dir: ./public</span><br><span class="line">          keep_files: false</span><br><span class="line">          force_orphan: false</span><br><span class="line">          commit_message: &#x27;🚀 Deploy static pages to gh-pages&#x27;</span><br><span class="line">          allow_empty_commit: false</span><br><span class="line">          cname: $&#123;&#123; github.respository_owner &#125;&#125;.github.io/$&#123;&#123; github.event.respository.name &#125;&#125;</span><br><span class="line">          user_name: \&quot;github-actions[bot]\&quot;</span><br><span class="line">          user_email: \&quot;github-actions[bot]@users.noreply.github.com\&quot;</span><br></pre></td></tr></table></figure><h2 id="4️⃣-部署其他仓库-gh-pages"><a href="#4️⃣-部署其他仓库-gh-pages" class="headerlink" title="4️⃣ 部署其他仓库 gh-pages"></a>4️⃣ 部署其他仓库 gh-pages</h2><h3 id="使用-Personal-Access-Token-PAT-方法同上"><a href="#使用-Personal-Access-Token-PAT-方法同上" class="headerlink" title="使用 Personal Access Token (PAT) 方法同上"></a>使用 Personal Access Token (PAT) 方法同上</h3><h3 id="简化版-2"><a href="#简化版-2" class="headerlink" title="简化版"></a>简化版</h3><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/simple-hexo-deploy-other.png" alt="name: simple-hexo-deploy-other"></p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># .github/workflows/simple-hexo-deploy-other.yml</span></span><br><span class="line"><span class="attr">name:</span> <span class="string">simple-hexo-deploy-other</span></span><br><span class="line"></span><br><span class="line"><span class="attr">on:</span></span><br><span class="line">  <span class="attr">push:</span></span><br><span class="line">    <span class="attr">branches:</span> [ <span class="string">main</span> ]</span><br><span class="line">  <span class="attr">workflow_dispatch:</span></span><br><span class="line">  </span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">build:</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/checkout@v4</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">submodules:</span> <span class="string">recursive</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/setup-node@v4</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">node-version:</span> <span class="string">\&quot;20\&quot;</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/cache@v4</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">path:</span> <span class="string">node_modules</span></span><br><span class="line">          <span class="attr">key:</span> <span class="string">$&#123;&#123;</span> <span class="string">runner.OS</span> <span class="string">&#125;&#125;-npm-cache</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">run:</span> <span class="string">npm</span> <span class="string">install</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">run:</span> <span class="string">npm</span> <span class="string">run</span> <span class="string">build</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/upload-artifact@v4</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">name:</span> <span class="string">public</span></span><br><span class="line">          <span class="attr">path:</span> <span class="string">$&#123;&#123;</span> <span class="string">github.workspace</span> <span class="string">&#125;&#125;/public</span></span><br><span class="line">          <span class="attr">retention-days:</span> <span class="number">1</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">deploy:</span></span><br><span class="line">    <span class="attr">needs:</span> <span class="string">build</span></span><br><span class="line">    <span class="attr">permissions:</span></span><br><span class="line">      <span class="attr">pages:</span> <span class="string">write</span></span><br><span class="line">      <span class="attr">id-token:</span> <span class="string">write</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="attr">name:</span> <span class="string">github-pages</span></span><br><span class="line">      <span class="attr">url:</span> <span class="string">$&#123;&#123;</span> <span class="string">steps.deployment.outputs.page_url</span> <span class="string">&#125;&#125;</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/download-artifact@v4</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">name:</span> <span class="string">public</span></span><br><span class="line">          <span class="attr">path:</span> <span class="string">./public</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">peaceiris/actions-gh-pages@v4</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">personal_token:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.PERSONAL_TOKEN</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">external_repository:</span> <span class="comment"># 用户名/其他仓库</span></span><br><span class="line">          <span class="attr">publish_branch:</span> <span class="string">gh-pages</span></span><br><span class="line">          <span class="attr">publish_dir:</span> <span class="string">./public</span></span><br><span class="line">          <span class="attr">keep_files:</span> <span class="literal">false</span></span><br><span class="line">          <span class="attr">force_orphan:</span> <span class="literal">false</span></span><br><span class="line">          <span class="attr">commit_message:</span> <span class="string">&#x27;🚀 Deploy static pages to gh-pages&#x27;</span></span><br><span class="line">          <span class="attr">allow_empty_commit:</span> <span class="literal">false</span></span><br><span class="line">          <span class="attr">cname:</span> <span class="comment"># 自定义</span></span><br><span class="line">          <span class="attr">user_name:</span> <span class="string">\&quot;github-actions[bot]\&quot;</span></span><br><span class="line">          <span class="attr">user_email:</span> <span class="string">\&quot;github-actions[bot]@users.noreply.github.com\&quot;</span></span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-12-4-Ways-to-Deploy-Hexo/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-12-4-Ways-to-Deploy-Hexo/"/>
    <published>2026-08-11T19:23:10.000Z</published>
    <summary>
      <![CDATA[<h1 id="Hexo-四种部署方式"><a href="#Hexo-四种部署方式" class="headerlink" title="Hexo 四种部署方式"></a>Hexo 四种部署方式</h1><p><img src="https://cdn.jsdelivr.net]]>
    </summary>
    <title>4 Ways to Deploy Hexo</title>
    <updated>2026-08-18T22:43:38.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="细粒度个人访问令牌"><a href="#细粒度个人访问令牌" class="headerlink" title="细粒度个人访问令牌"></a>细粒度个人访问令牌</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/GitHub_Fine-grained_personal_access_tokens.png" alt="GitHub Fine-grained personal access tokens.png"></p><h2 id="📝-笔记总结"><a href="#📝-笔记总结" class="headerlink" title="📝 笔记总结"></a>📝 笔记总结</h2><p>Personal access tokens (classic) 设置：<br><code>repo - Full control of private repositories</code><br>Fine-grained personal access tokens 类似设置。</p><h2 id="📖-内容来源"><a href="#📖-内容来源" class="headerlink" title="📖 内容来源"></a>📖 内容来源</h2><ul><li><a href="https://chat.deepseek.com/share/r4s3ni2nkcznw41pvf">细粒度令牌权限设置</a>（<a href="https://chat.deepseek.com/a/chat/s/48458623-bb78-42d9-94fb-e87ffd3adf6e">DeepSeek</a>）</li><li><a href="https://docs.github.com/zh/rest/authentication/permissions-required-for-fine-grained-personal-access-tokens">细粒度个人访问令牌所需的权限</a></li></ul><h2 id="🔍-简单说明"><a href="#🔍-简单说明" class="headerlink" title="🔍 简单说明"></a>🔍 简单说明</h2><h3 id="Fine-grained-personal-access-tokens"><a href="#Fine-grained-personal-access-tokens" class="headerlink" title="Fine-grained personal access tokens"></a>Fine-grained personal access tokens</h3><blockquote><p>Create a fine-grained, repository-scoped token suitable for personal API use and for using Git over HTTPS.</p></blockquote><p>创建一个细粒度的、仓库范围的令牌，为个人通过 API 以及 HTTPS 使用 Git 所用。</p><h3 id="Personal-access-tokens-classic"><a href="#Personal-access-tokens-classic" class="headerlink" title="Personal access tokens (classic)"></a>Personal access tokens (classic)</h3><blockquote><p>Tokens you have generated that can be used to access the GitHub API.</p></blockquote><p>你已生成的、可用于访问 GitHub API 的令牌。</p><h2 id="🔄-复刻经典权限"><a href="#🔄-复刻经典权限" class="headerlink" title="🔄 复刻经典权限"></a>🔄 复刻经典权限</h2><p>repo: Full control of private repositories，确实是经典令牌（Classic PAT）中最“万能”也最危险的权限。细粒度令牌（Fine-grained PAT）中，不存在、也不允许存在一个直接等同于“Full control of private repositories”的权限选项。</p><p>要复制“Full control”的效果，核心是把“访问范围”和“数据权限”都开到最大：</p><h3 id="仓库访问范围（Repository-access）"><a href="#仓库访问范围（Repository-access）" class="headerlink" title="仓库访问范围（Repository access）"></a>仓库访问范围（Repository access）</h3><p>必须选择 <strong>“All repositories”</strong>。</p><h3 id="仓库数据权限（Repository-permissions）"><a href="#仓库数据权限（Repository-permissions）" class="headerlink" title="仓库数据权限（Repository permissions）"></a>仓库数据权限（Repository permissions）</h3><p>逐个手动把所有与仓库读写相关的权限都设为 <strong>“Read and write”</strong>。关键列表如下（缺一不可）：</p><ul><li><strong>Contents</strong>（代码、提交、树）</li><li><strong>Pull Requests</strong></li><li><strong>Issues</strong></li><li><strong>Actions</strong>（GitHub Actions）</li><li><strong>Workflows</strong>（工作流文件）</li><li><strong>Administration</strong>（仓库设置、分支保护规则）</li><li><strong>Metadata</strong>（元数据，这个默认就有，通常不可取消）</li><li><strong>Secrets</strong>（仓库和环境的密文）</li><li><strong>Deployments</strong>（部署状态）</li><li><strong>Environments</strong>（环境配置）</li></ul><p>将上述所有权限都设为读写后，这个细粒度令牌就拥有了绝大多数私有仓库的“完整控制权”。</p><h2 id="🚫-无法复刻的部分"><a href="#🚫-无法复刻的部分" class="headerlink" title="🚫 无法复刻的部分"></a>🚫 无法复刻的部分</h2><p>即使你照上面全部设置了，它依然<strong>不是</strong>真正的“Full control”，主要有两个硬性限制：</p><ul><li><strong>组织管理权限（无法绕过）</strong>：如果你是组织成员而非所有者，即使令牌给了 <code>Administration: Write</code>，你在细粒度令牌下<strong>无法</strong>修改组织的分支保护规则或成员权限，除非你本人是组织所有者。而经典令牌的 <code>repo</code> 范围直接沿用你账户的现有权限，不受此限。</li><li><strong>外部仓库权限（无法覆盖）</strong>：细粒度令牌的“All repositories”仅指你创建或直接所属组织下的仓库。它<strong>无法</strong>访问外部协作者邀请你加入的仓库，除非该仓库明确被选中。而经典 <code>repo</code> 令牌可以访问你所有能接触到的私有仓库。</li></ul><h2 id="⚠️-需要完全相同的“Full-control”？"><a href="#⚠️-需要完全相同的“Full-control”？" class="headerlink" title="⚠️ 需要完全相同的“Full control”？"></a>⚠️ 需要完全相同的“Full control”？</h2><p>只有唯一的替代方案：<strong>继续使用经典令牌（Personal access tokens (classic)）</strong>，并在创建时勾选 <code>repo</code> 范围。但需要注意：</p><ul><li><strong>GitHub已逐步限制经典令牌的使用</strong>（自2024年起，部分操作已不支持新建经典令牌）。</li><li>如果必须使用，请务必将其视为最高级别密码，<strong>绝不要</strong>写入代码或日志，并设置极短的过期时间（如30天）。</li></ul><h2 id="💡-总结建议"><a href="#💡-总结建议" class="headerlink" title="💡 总结建议"></a>💡 总结建议</h2><p>如果你是为了给CI&#x2F;CD（持续集成&#x2F;持续部署）系统授权，<strong>强烈不建议</strong>追求“Full control”。请只授予该CI任务必要的单个仓库和具体权限（如只需 <code>Contents: read</code> 来拉代码）。</p><p>如果确因历史代码或工具限制必须使用<code>repo</code>全权限，那么<strong>不要</strong>尝试在细粒度令牌中寻找平替——直接创建经典令牌，但务必在风险评估后启用严格的过期和审计策略。</p><h2 id="📋-简单案例"><a href="#📋-简单案例" class="headerlink" title="📋 简单案例"></a>📋 简单案例</h2><p>我现在使用 <code>Fine-grained tokens</code> 代替  <code>Tokens (classic)</code>，生成例如 Repo 权限全选用于从源码仓库使用 <code>GitHub Actions</code> 部署博客仓库的 gh-pages。</p><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/GitHub_Fine-grained_tokens_Permissions.png" alt="GitHub Fine-grained tokens Permissions"></p>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-09-Fine-grained-personal-access-tokens/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-09-Fine-grained-personal-access-tokens/"/>
    <published>2026-08-08T23:50:13.000Z</published>
    <summary>
      <![CDATA[<h1 id="细粒度个人访问令牌"><a href="#细粒度个人访问令牌" class="headerlink" title="细粒度个人访问令牌"></a>细粒度个人访问令牌</h1><p><img src="https://cdn.jsdelivr.net/gh/shen]]>
    </summary>
    <title>Fine-grained personal access tokens</title>
    <updated>2026-08-16T17:44:19.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="Pagic-Windows-降级安装"><a href="#Pagic-Windows-降级安装" class="headerlink" title="Pagic Windows 降级安装"></a>Pagic Windows 降级安装</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Pagic_dist_on_http_127.png" alt="Pagic dist on http 127"></p><h2 id="📝-笔记总结"><a href="#📝-笔记总结" class="headerlink" title="📝 笔记总结"></a>📝 笔记总结</h2><p>克隆仓库，修改 <code>i18n.tsx</code>，安装成功，但是部署中还会出现 CDN 错误。</p><h2 id="📖-内容来源"><a href="#📖-内容来源" class="headerlink" title="📖 内容来源"></a>📖 内容来源</h2><ul><li><a href="https://pagic.org/zh-CN/docs/usage.html">Pagic 安装</a></li><li><a href="https://pagic.org/docs/usage.html">Pagic Installation</a></li></ul><blockquote><p>Pagic：Deno + React 驱动的静态网站生成器</p></blockquote><h2 id="🔧-安装-Deno-v1-34-1"><a href="#🔧-安装-Deno-v1-34-1" class="headerlink" title="🔧 安装 Deno v1.34.1"></a>🔧 安装 Deno v1.34.1</h2><h3 id="PowerShell-Windows-（失败）"><a href="#PowerShell-Windows-（失败）" class="headerlink" title="PowerShell (Windows) （失败）"></a>PowerShell (Windows) （失败）</h3><p>原理是将脚本内容下载后，通过管道传递给 Invoke-Expression，并使用 -ArgumentList 来指定版本号：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">irm</span> https://deno.land/install.ps1 | <span class="built_in">iex</span> <span class="literal">-ArgumentList</span> \<span class="string">&quot;v1.34.1\&quot;</span></span><br></pre></td></tr></table></figure><p>或</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">irm</span> https://deno.land/install.ps1 | <span class="built_in">iex</span> <span class="literal">-args</span> \<span class="string">&quot;v1.34.1\&quot;</span></span><br></pre></td></tr></table></figure><h3 id="分两步执行（成功）"><a href="#分两步执行（成功）" class="headerlink" title="分两步执行（成功）"></a>分两步执行（成功）</h3><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 1. 下载脚本到本地临时文件夹</span></span><br><span class="line"><span class="built_in">Invoke-RestMethod</span> <span class="literal">-Uri</span> \<span class="string">&quot;https://deno.land/install.ps1\&quot;</span> <span class="literal">-OutFile</span> \<span class="string">&quot;<span class="variable">$env:TEMP</span>\\deno_install.ps1\&quot;</span></span><br><span class="line"><span class="comment"># 2. 执行脚本并传入参数</span></span><br><span class="line">&amp; \<span class="string">&quot;<span class="variable">$env:TEMP</span>\\deno_install.ps1\&quot;</span> \<span class="string">&quot;v1.34.1\&quot;</span></span><br></pre></td></tr></table></figure><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Deno_Windows_deno_install_1.34.1.png" alt="Deno Windows deno install 1.34.1"></p><h2 id="🧩-安装后验证"><a href="#🧩-安装后验证" class="headerlink" title="🧩 安装后验证"></a>🧩 安装后验证</h2><p>安装完成后，记得关闭并重新打开你的 <code>PowerShell</code> 终端，然后运行以下命令来确认版本：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">deno <span class="literal">--version</span></span><br></pre></td></tr></table></figure><h2 id="⬆️-安装-Pagic"><a href="#⬆️-安装-Pagic" class="headerlink" title="⬆️ 安装 Pagic"></a>⬆️ 安装 Pagic</h2><h3 id="安装最新版本"><a href="#安装最新版本" class="headerlink" title="安装最新版本"></a>安装最新版本</h3><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">deno install <span class="literal">--unstable</span> <span class="literal">--allow-read</span> <span class="literal">--allow-write</span> <span class="literal">--allow-net</span> <span class="literal">--allow-env</span> <span class="literal">--allow-run</span> <span class="literal">--name</span>=pagic https://deno.land/x/pagic/mod.ts</span><br></pre></td></tr></table></figure><h3 id="安装指定版本"><a href="#安装指定版本" class="headerlink" title="安装指定版本"></a>安装指定版本</h3><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">deno install <span class="literal">--unstable</span> <span class="literal">--allow-read</span> <span class="literal">--allow-write</span> <span class="literal">--allow-net</span> <span class="literal">--allow-env</span> <span class="literal">--allow-run</span> <span class="literal">--name</span>=pagic https://deno.land/x/pagic@v1.<span class="number">6.3</span>/mod.ts</span><br></pre></td></tr></table></figure><h3 id="指定读写目录的方式"><a href="#指定读写目录的方式" class="headerlink" title="指定读写目录的方式"></a>指定读写目录的方式</h3><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">deno install <span class="literal">--unstable</span> <span class="literal">--allow-read</span>=/home/xcatliu/site <span class="literal">--allow-write</span>=/home/xcatliu/site <span class="literal">--allow-net</span> <span class="literal">--allow-env</span> <span class="literal">--allow-run</span> <span class="literal">--name</span>=pagic https://deno.land/x/pagic/mod.ts</span><br></pre></td></tr></table></figure><h3 id="指定读写目录的方式-1"><a href="#指定读写目录的方式-1" class="headerlink" title="指定读写目录的方式"></a>指定读写目录的方式</h3><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">deno install <span class="literal">--unstable</span> <span class="literal">--allow-read</span>=/home/xcatliu/site <span class="literal">--allow-write</span>=/home/xcatliu/site <span class="literal">--allow-net</span> <span class="literal">--allow-env</span> <span class="literal">--allow-run</span> <span class="literal">--name</span>=pagic https://deno.land/x/pagic/mod.ts</span><br></pre></td></tr></table></figure><h2 id="🚫-CDN-错误"><a href="#🚫-CDN-错误" class="headerlink" title="🚫 CDN  错误"></a>🚫 CDN  错误</h2><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">PS</span> D:\\git&gt; deno install <span class="literal">--unstable</span> <span class="literal">--allow-read</span> <span class="literal">--allow-write</span> <span class="literal">--allow-net</span> <span class="literal">--allow-env</span> <span class="literal">--allow-run</span> <span class="literal">--name</span>=pagic https://deno.land/x/pagic/mod.ts</span><br><span class="line">Warning Implicitly <span class="keyword">using</span> latest version (v1.6.3) for https://deno.land/x/pagic/mod.ts</span><br><span class="line">Sending fatal alert BadCertificatey@v0.<span class="number">25.7</span>/prompt/_generic_suggestions.ts (<span class="number">10</span>/<span class="number">57</span>)</span><br><span class="line">Sending fatal alert BadCertificate11.<span class="number">0</span>/fs/mod.ts <span class="number">0.40</span>KiB/<span class="number">0.40</span>KiB (<span class="number">15</span>/<span class="number">57</span>)</span><br><span class="line">error: error sending request <span class="keyword">for</span> url (https://cdn.pagic.org/i18next@<span class="number">19.8</span>.<span class="number">1</span>/esnext/i18next.js): error trying to connect: invalid peer certificate: NotValidForName</span><br><span class="line">    at https://deno.land/x/pagic@v1.<span class="number">6.3</span>/src/plugins/i18n.tsx:<span class="number">4</span>:<span class="number">21</span></span><br><span class="line"><span class="built_in">PS</span> D:\\git&gt;</span><br></pre></td></tr></table></figure><p>错误是由于 Deno 在下载依赖时遇到了 SSL 证书验证问题。具体是 cdn.pagic.org 这个域名的证书无效（NotValidForName 错误）。</p><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Pagic_error_sending_request_for_url.png" alt="Pagic error sending request for url"></p><h2 id="🎯-本地安装"><a href="#🎯-本地安装" class="headerlink" title="🎯 本地安装"></a>🎯 本地安装</h2><h3 id="克隆仓库"><a href="#克隆仓库" class="headerlink" title="克隆仓库"></a>克隆仓库</h3><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git clone git@github.com:xcatliu/pagic.git</span><br></pre></td></tr></table></figure><h3 id="修改-i18n-tsx"><a href="#修改-i18n-tsx" class="headerlink" title="修改 i18n.tsx"></a>修改 <code>i18n.tsx</code></h3><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># pagic\\src\\plugins\\i18n.tsx</span></span><br><span class="line">import i18next from <span class="string">&#x27;../../cdn.pagic.org/i18next@19.8.1/esnext/i18next.js&#x27;</span>;</span><br><span class="line">import &#123; Trans as TransComponent &#125; from <span class="string">&#x27;../../cdn.pagic.org/react-i18next@11.7.3/Trans.js&#x27;</span>;</span><br><span class="line"></span><br></pre></td></tr></table></figure><h3 id="安装-Pagic"><a href="#安装-Pagic" class="headerlink" title="安装 Pagic"></a>安装 Pagic</h3><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">deno install <span class="literal">--unstable</span> <span class="literal">--allow-read</span> <span class="literal">--allow-write</span> <span class="literal">--allow-net</span> <span class="literal">--allow-env</span> <span class="literal">--allow-run</span> <span class="literal">--name</span>=pagic mod.ts</span><br></pre></td></tr></table></figure><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Pagic_Successfully_installed_pagic.png" alt="Pagic Successfully installed pagic"></p><p>##💡初始化项目</p><blockquote><p>要使用 pagic 构建静态网站，则该项目至少需要包含一个 pagic.config.ts 配置文件和一个 md&#x2F;tsx 页面文件：</p></blockquote><p>site&#x2F;<br>├── pagic.config.ts<br>└── README.md</p><blockquote><p>当然，pagic.config.ts 一开始可以只导出一个空对象：</p></blockquote><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">export default &#123;&#125;;</span><br></pre></td></tr></table></figure><blockquote><p>README.md 可以是一个简单的 Markdown 文件：</p></blockquote><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Hello world</span></span><br></pre></td></tr></table></figure><blockquote><p>你可以运行以下命令一次性创建出上面的 site 项目：</p></blockquote><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mkdir site &amp;&amp; <span class="built_in">cd</span> site &amp;&amp; <span class="built_in">echo</span> \<span class="string">&quot;export default &#123;&#125;;\&quot;</span> &gt; pagic.config.ts &amp;&amp; <span class="built_in">echo</span> \<span class="string">&quot;# Hello world\&quot;</span> &gt; README.md</span><br></pre></td></tr></table></figure><h2 id="📚-运行-pagic-build"><a href="#📚-运行-pagic-build" class="headerlink" title="📚 运行 pagic build"></a>📚 运行 pagic build</h2><blockquote><p>接下来，我们就可以在项目中使用 pagic build 命令了。它的基本用法如下：</p></blockquote><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 构建静态网站</span></span><br><span class="line">pagic build [<span class="type">options</span>]</span><br><span class="line"><span class="comment"># --watch   监听文件变动以重新构建</span></span><br><span class="line"><span class="comment"># --serve   启动本地服务，预览静态网站</span></span><br><span class="line"><span class="comment"># --port    指定本地服务的端口号</span></span><br></pre></td></tr></table></figure><blockquote><p>不妨试试在 site 目录下运行以下代码：</p></blockquote><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pagic build <span class="literal">--watch</span> <span class="literal">--serve</span></span><br></pre></td></tr></table></figure><blockquote><p>然后用浏览器打开 <a href="http://127.0.0.1:8000/">http://127.0.0.1:8000/</a> ，看看是不是显示出 Hello world 了呢？</p></blockquote><blockquote><p>注意，构建结果在 dist 目录中（这里隐藏了一些次要的文件）：</p></blockquote><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">site/</span><br><span class="line">|── dist    <span class="comment"># 构建结果目录</span></span><br><span class="line">|   └── index.html</span><br><span class="line">├── pagic.config.ts</span><br><span class="line">└── README.md</span><br></pre></td></tr></table></figure><blockquote><p>一般的 Markdown 文件会被构建为同名的 HTML 文件，但是 README.md 被构建为了 index.html，这是一种人性化的处理，方便同时在 GitHub 中和静态网站中展示首页的内容。</p></blockquote><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Pagic_pagic_build_watch_serve.png" alt="Pagic pagic build watch serve"></p><p>后面不尝试了，因为还会出现 CDN 出错，修改本地文件或许可以构建成功，但是不太顺利。</p>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-08-Pagic-Windows-Installation-Again/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-08-Pagic-Windows-Installation-Again/"/>
    <published>2026-08-08T02:24:03.000Z</published>
    <summary>
      <![CDATA[<h1 id="Pagic-Windows-降级安装"><a href="#Pagic-Windows-降级安装" class="headerlink" title="Pagic Windows 降级安装"></a>Pagic Windows 降级安装</h1><p><img s]]>
    </summary>
    <title>Pagic Windows Installation Again</title>
    <updated>2026-08-16T17:44:03.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="Pagic-Windows-安装"><a href="#Pagic-Windows-安装" class="headerlink" title="Pagic Windows 安装"></a>Pagic Windows 安装</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Deno_Windows_PowerShell_irm.png" alt="Deno Windows PowerShell irm"></p><h2 id="📝-笔记总结"><a href="#📝-笔记总结" class="headerlink" title="📝 笔记总结"></a>📝 笔记总结</h2><p>未安装成功，Deno 版本 2.9.4，后续发现可能是因为 Deno 版本太高了，使用 Deno 1.34.1 再次尝试。</p><h2 id="📖-内容来源"><a href="#📖-内容来源" class="headerlink" title="📖 内容来源"></a>📖 内容来源</h2><ul><li><a href="https://pagic.org/zh-CN/docs/usage.html">Pagic 安装</a></li><li><a href="https://pagic.org/docs/usage.html">Pagic Installation</a></li></ul><blockquote><p>Pagic：Deno + React 驱动的静态网站生成器</p></blockquote><h2 id="🔧-安装-Deno"><a href="#🔧-安装-Deno" class="headerlink" title="🔧 安装 Deno"></a>🔧 安装 Deno</h2><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">irm</span> https://deno.land/install.ps1 | <span class="built_in">iex</span></span><br></pre></td></tr></table></figure><h2 id="⬆️-安装-Pagic"><a href="#⬆️-安装-Pagic" class="headerlink" title="⬆️ 安装 Pagic"></a>⬆️ 安装 Pagic</h2><h3 id="安装最新版本（失败）"><a href="#安装最新版本（失败）" class="headerlink" title="安装最新版本（失败）"></a>安装最新版本（失败）</h3><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">deno install <span class="literal">--unstable</span> <span class="literal">--allow-read</span> <span class="literal">--allow-write</span> <span class="literal">--allow-net</span> <span class="literal">--allow-env</span> <span class="literal">--allow-run</span> <span class="literal">--name</span>=pagic https://deno.land/x/pagic/mod.ts</span><br></pre></td></tr></table></figure><p>⚠️ 链接不存在：<a href="https://deno.land/x/pagic/mod.ts">https://deno.land/x/pagic/mod.ts</a></p><h3 id="安装指定版本（失败）"><a href="#安装指定版本（失败）" class="headerlink" title="安装指定版本（失败）"></a>安装指定版本（失败）</h3><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">deno install <span class="literal">--unstable</span> <span class="literal">--allow-read</span> <span class="literal">--allow-write</span> <span class="literal">--allow-net</span> <span class="literal">--allow-env</span> <span class="literal">--allow-run</span> <span class="literal">--name</span>=pagic https://deno.land/x/pagic@v1.<span class="number">6.3</span>/mod.ts</span><br></pre></td></tr></table></figure><p>⚠️ 链接存在：<a href="https://deno.land/x/pagic@v1.6.3/mod.ts">https://deno.land/x/pagic@v1.6.3/mod.ts</a></p><h3 id="指定读写目录的方式（未尝试）"><a href="#指定读写目录的方式（未尝试）" class="headerlink" title="指定读写目录的方式（未尝试）"></a>指定读写目录的方式（未尝试）</h3><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">deno install <span class="literal">--unstable</span> <span class="literal">--allow-read</span>=/home/xcatliu/site <span class="literal">--allow-write</span>=/home/xcatliu/site <span class="literal">--allow-net</span> <span class="literal">--allow-env</span> <span class="literal">--allow-run</span> <span class="literal">--name</span>=pagic https://deno.land/x/pagic/mod.ts</span><br></pre></td></tr></table></figure><h2 id="❓安装错误提示一"><a href="#❓安装错误提示一" class="headerlink" title="❓安装错误提示一"></a>❓安装错误提示一</h2><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">PS</span> D:\\Git&gt; deno install <span class="literal">--unstable</span> <span class="literal">--allow-read</span> <span class="literal">--allow-write</span> <span class="literal">--allow-net</span> <span class="literal">--allow-env</span> <span class="literal">--allow-run</span> <span class="literal">--name</span>=pagic https://deno.land/x/pagic@v1.<span class="number">6.3</span>/mod.ts</span><br><span class="line">error: the following required arguments were not provided:</span><br><span class="line">  <span class="literal">--global</span></span><br><span class="line"></span><br><span class="line">Note: Permission flags can only be used <span class="keyword">in</span> a global setting</span><br></pre></td></tr></table></figure><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Deno_Windows_deno_install_error_1.png" alt="Deno Windows deno install error"></p><blockquote><p>Deno 要求在使用权限标志时，必须指定 –global 选项。正确的命令在你的命令末尾加上 –global</p></blockquote><ul><li>加上 <code>--global</code>，Deno 1.30+ 版本，权限标志（如 <code>--allow-read</code>）只能<strong>全局安装</strong>使用</li><li><code>--global</code></li><li>去掉 <code>--unstable</code>，Deno 2.0+ 版本不需要</li></ul><p>正确的命令：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">deno install <span class="literal">--allow-read</span> <span class="literal">--allow-write</span> <span class="literal">--allow-net</span> <span class="literal">--allow-env</span> <span class="literal">--allow-run</span> <span class="literal">--name</span>=pagic <span class="literal">--global</span> https://deno.land/x/pagic@v1.<span class="number">6.3</span>/mod.ts</span><br></pre></td></tr></table></figure><h2 id="🪲-安装错误提示二"><a href="#🪲-安装错误提示二" class="headerlink" title="🪲 安装错误提示二"></a>🪲 安装错误提示二</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">PS D:\\Git&gt; deno install --allow-read --allow-write --allow-net --allow-env --allow-run --name=pagic --global https://deno.land/x/pagic@v1.6.3/mod.ts</span><br><span class="line">✅ Granted import access to \&quot;cdn.pagic.org:443\&quot;.</span><br><span class="line">error: Import &#x27;https://cdn.pagic.org/i18next@19.8.1/esnext/i18next.js&#x27; failed.</span><br><span class="line">    0: error sending request for url (https://cdn.pagic.org/i18next@19.8.1/esnext/i18next.js): client error (Connect): invalid peer certificate: certificate not valid for name \&quot;cdn.pagic.org\&quot;; certificate is only valid for DnsName(\&quot;*.cdn.myqcloud.com\&quot;), DnsName(\&quot;*.2144.cn\&quot;), DnsName(\&quot;*.2144.com\&quot;), DnsName(\&quot;*.4399.com\&quot;), DnsName(\&quot;*.5054399.com\&quot;), DnsName(\&quot;*.58cdn.com.cn\&quot;), DnsName(\&quot;*.bldimg.com\&quot;), DnsName(\&quot;*.cdn-go.cn\&quot;), DnsName(\&quot;*.cntv.qcloudcdn.com\&quot;), DnsName(\&quot;*.danmu.com\&quot;), DnsName(\&quot;*.dd.cdntips.net\&quot;), DnsName(\&quot;*.dd.qq.com\&quot;), DnsName(\&quot;*.dianping.com\&quot;), DnsName(\&quot;*.dl.txcdns.com\&quot;), DnsName(\&quot;*.dlied1.cdntips.net\&quot;), DnsName(\&quot;*.dpfile.com\&quot;), DnsName(\&quot;*.ffnews.cn\&quot;), DnsName(\&quot;*.file.myqcloud.com\&quot;), DnsName(\&quot;*.flash.2144.com\&quot;), DnsName(\&quot;*.flash.cn\&quot;), DnsName(\&quot;*.geetest.com\&quot;), DnsName(\&quot;*.gtimg.cn\&quot;), DnsName(\&quot;*.gtimg.com\&quot;), DnsName(\&quot;*.hls.cdn.myqcloud.com\&quot;), DnsName(\&quot;*.image.myqcloud.com\&quot;), DnsName(\&quot;*.img4399.com\&quot;), DnsName(\&quot;*.jsbchina.cn\&quot;), DnsName(\&quot;*.lof3.xyz\&quot;), DnsName(\&quot;*.meituan.net\&quot;), DnsName(\&quot;*.myapp.com\&quot;), DnsName(\&quot;*.mykeeta.net\&quot;), DnsName(\&quot;*.qcloudcdn.com\&quot;), DnsName(\&quot;*.qpic.cn\&quot;), DnsName(\&quot;*.sogoucdn.com\&quot;), DnsName(\&quot;*.suyinwealth.com\&quot;), DnsName(\&quot;*.ugdtimg.com\&quot;), DnsName(\&quot;*.uniqlo.cn\&quot;), DnsName(\&quot;*.vda.v.qcloudcdn.com\&quot;), DnsName(\&quot;*.video.myqcloud.com\&quot;), DnsName(\&quot;*.vip.cdngot.com\&quot;), DnsName(\&quot;*.vod-qcloud.com\&quot;), DnsName(\&quot;*.vod.cdn.myqcloud.com\&quot;), DnsName(\&quot;*.vod.myqcloud.com\&quot;), DnsName(\&quot;*.vod2.myqcloud.com\&quot;), DnsName(\&quot;*.wanyabox.com\&quot;), DnsName(\&quot;*.weishi.qq.com\&quot;), DnsName(\&quot;*.wx.qq.com\&quot;), DnsName(\&quot;*.zhongcheng818.com\&quot;), DnsName(\&quot;*.zservey.net\&quot;), DnsName(\&quot;cdn.myqcloud.com\&quot;), DnsName(\&quot;flash.cn\&quot;), DnsName(\&quot;nitrome.com.4399.com\&quot;), DnsName(\&quot;www.miniclip.com.4399pk.com\&quot;), DnsName(\&quot;www.tencentwm.com\&quot;), DnsName(\&quot;www.txfund.com\&quot;) or DnsName(\&quot;xpdl999.aiwan4399.com\&quot;)</span><br><span class="line">    1: client error (Connect)</span><br><span class="line">    2: invalid peer certificate: certificate not valid for name \&quot;cdn.pagic.org\&quot;; certificate is only valid for DnsName(\&quot;*.cdn.myqcloud.com\&quot;), DnsName(\&quot;*.2144.cn\&quot;), DnsName(\&quot;*.2144.com\&quot;), DnsName(\&quot;*.4399.com\&quot;), DnsName(\&quot;*.5054399.com\&quot;), DnsName(\&quot;*.58cdn.com.cn\&quot;), DnsName(\&quot;*.bldimg.com\&quot;), DnsName(\&quot;*.cdn-go.cn\&quot;), DnsName(\&quot;*.cntv.qcloudcdn.com\&quot;), DnsName(\&quot;*.danmu.com\&quot;), DnsName(\&quot;*.dd.cdntips.net\&quot;), DnsName(\&quot;*.dd.qq.com\&quot;), DnsName(\&quot;*.dianping.com\&quot;), DnsName(\&quot;*.dl.txcdns.com\&quot;), DnsName(\&quot;*.dlied1.cdntips.net\&quot;), DnsName(\&quot;*.dpfile.com\&quot;), DnsName(\&quot;*.ffnews.cn\&quot;), DnsName(\&quot;*.file.myqcloud.com\&quot;), DnsName(\&quot;*.flash.2144.com\&quot;), DnsName(\&quot;*.flash.cn\&quot;), DnsName(\&quot;*.geetest.com\&quot;), DnsName(\&quot;*.gtimg.cn\&quot;), DnsName(\&quot;*.gtimg.com\&quot;), DnsName(\&quot;*.hls.cdn.myqcloud.com\&quot;), DnsName(\&quot;*.image.myqcloud.com\&quot;), DnsName(\&quot;*.img4399.com\&quot;), DnsName(\&quot;*.jsbchina.cn\&quot;), DnsName(\&quot;*.lof3.xyz\&quot;), DnsName(\&quot;*.meituan.net\&quot;), DnsName(\&quot;*.myapp.com\&quot;), DnsName(\&quot;*.mykeeta.net\&quot;), DnsName(\&quot;*.qcloudcdn.com\&quot;), DnsName(\&quot;*.qpic.cn\&quot;), DnsName(\&quot;*.sogoucdn.com\&quot;), DnsName(\&quot;*.suyinwealth.com\&quot;), DnsName(\&quot;*.ugdtimg.com\&quot;), DnsName(\&quot;*.uniqlo.cn\&quot;), DnsName(\&quot;*.vda.v.qcloudcdn.com\&quot;), DnsName(\&quot;*.video.myqcloud.com\&quot;), DnsName(\&quot;*.vip.cdngot.com\&quot;), DnsName(\&quot;*.vod-qcloud.com\&quot;), DnsName(\&quot;*.vod.cdn.myqcloud.com\&quot;), DnsName(\&quot;*.vod.myqcloud.com\&quot;), DnsName(\&quot;*.vod2.myqcloud.com\&quot;), DnsName(\&quot;*.wanyabox.com\&quot;), DnsName(\&quot;*.weishi.qq.com\&quot;), DnsName(\&quot;*.wx.qq.com\&quot;), DnsName(\&quot;*.zhongcheng818.com\&quot;), DnsName(\&quot;*.zservey.net\&quot;), DnsName(\&quot;cdn.myqcloud.com\&quot;), DnsName(\&quot;flash.cn\&quot;), DnsName(\&quot;nitrome.com.4399.com\&quot;), DnsName(\&quot;www.miniclip.com.4399pk.com\&quot;), DnsName(\&quot;www.tencentwm.com\&quot;), DnsName(\&quot;www.txfund.com\&quot;) or DnsName(\&quot;xpdl999.aiwan4399.com\&quot;)</span><br><span class="line">    at https://deno.land/x/pagic@v1.6.3/src/plugins/i18n.tsx:4:21</span><br></pre></td></tr></table></figure><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Deno_Windows_deno_install_error_2.png" alt="Deno Windows deno install error"></p><p><code>cdn.pagic.org</code> DNS 被污染，解析到腾讯云 CDN 节点，但该节点证书并不是 <code>cdn.pagic.org</code> 的，出现证书域名不匹配，Deno HTTPS 校验直接拒绝。</p><h2 id="🌟-待续……"><a href="#🌟-待续……" class="headerlink" title="🌟 待续……"></a>🌟 待续……</h2><p>⚡ 解决不掉了。😅</p><h2 id="🧩-验证安装"><a href="#🧩-验证安装" class="headerlink" title="🧩 验证安装"></a>🧩 验证安装</h2><p>安装后，确保 <code>~/.deno/bin</code> 在你的系统 PATH 中，然后测试：</p><pre><code class="language-powershell">pagic --version``</code></pre>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-07-Pagic-Windows-Installation/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-07-Pagic-Windows-Installation/"/>
    <published>2026-08-06T23:02:06.000Z</published>
    <summary>
      <![CDATA[<h1 id="Pagic-Windows-安装"><a href="#Pagic-Windows-安装" class="headerlink" title="Pagic Windows 安装"></a>Pagic Windows 安装</h1><p><img src="http]]>
    </summary>
    <title>Pagic Windows Installation</title>
    <updated>2026-08-16T17:42:37.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="Deno-Windows-安装"><a href="#Deno-Windows-安装" class="headerlink" title="Deno Windows 安装"></a>Deno Windows 安装</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Deno_Windows_PowerShell_irm.png" alt="Deno Windows PowerShell irm"></p><h2 id="📝-笔记总结"><a href="#📝-笔记总结" class="headerlink" title="📝 笔记总结"></a>📝 笔记总结</h2><p>PowerShell 脚本安装最方便。</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">irm</span> https://deno.land/install.ps1 | <span class="built_in">iex</span></span><br><span class="line">deno <span class="literal">--version</span></span><br></pre></td></tr></table></figure><h2 id="📖-内容来源"><a href="#📖-内容来源" class="headerlink" title="📖 内容来源"></a>📖 内容来源</h2><ul><li><a href="https://pagic.org/zh-CN/docs/usage.html">安装 Deno</a></li><li><a href="https://pagic.org/zh-CN/docs/usage.html">Deno Windows 安装</a>（<a href="https://chat.deepseek.com/a/chat/s/29bfb074-8f83-4edb-a777-6f579fbbe845">DeepSeek</a>）</li></ul><blockquote><p>Deno 是一个由 Node.js 的原始作者 Ryan Dahl 创建的 JavaScript、TypeScript 和 WebAssembly 运行时。你可以把它看作是 Node.js 的“进化版”，旨在解决 Node.js 早期设计中的一些遗憾，为现代 Web 开发提供一个更安全、更高效的开发环境</p></blockquote><p>在 Windows 上安装 Deno 非常简单，有多种方法可供选择。官方推荐使用 PowerShell 脚本，因为它能提供更快的启动速度。</p><h2 id="🔧-使用-PowerShell-脚本安装（推荐）"><a href="#🔧-使用-PowerShell-脚本安装（推荐）" class="headerlink" title="🔧 使用 PowerShell 脚本安装（推荐）"></a>🔧 使用 PowerShell 脚本安装（推荐）</h2><p>这是最快捷的官方安装方式。以管理员身份打开 PowerShell 并运行以下命令：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">irm</span> https://deno.land/install.ps1 | <span class="built_in">iex</span></span><br></pre></td></tr></table></figure><blockquote><p> 这行代码的意思是从网上下载脚本并立即运行。</p></blockquote><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">irm</span> https://某个网站/脚本.ps1 | <span class="built_in">iex</span></span><br></pre></td></tr></table></figure><blockquote><p>这非常危险，因为你不知道脚本里写了什么，它可能会删除你的文件、窃取你的信息。除非你 100% 信任来源，并且仔细看过脚本内容，否则绝对不要执行这类命令。</p></blockquote><p>执行后，Deno 会默认安装到 <code>%USERPROFILE%\\.deno\\bin\\deno.exe</code>，安装程序通常会自动将此路径添加到系统 <code>PATH</code> 环境变量中。</p><p>安装完成后，打开一个新的终端窗口，运行以下命令验证是否安装成功：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">deno <span class="literal">--version</span></span><br></pre></td></tr></table></figure><p>如果能看到版本信息，就说明安装成功了。</p><h2 id="📦-其他安装方式"><a href="#📦-其他安装方式" class="headerlink" title="📦 其他安装方式"></a>📦 其他安装方式</h2><p>如果你更习惯使用包管理器，这些也是不错的选择：</p><table><thead><tr><th align="left">包管理器</th><th align="left">命令</th></tr></thead><tbody><tr><td align="left"><strong>Winget</strong></td><td align="left"><code>winget install DenoLand.Deno</code></td></tr><tr><td align="left"><strong>Scoop</strong></td><td align="left"><code>scoop install deno</code></td></tr><tr><td align="left"><strong>Chocolatey</strong></td><td align="left"><code>choco install deno</code></td></tr><tr><td align="left"><strong>npm</strong></td><td align="left"><code>npm install -g deno</code>（启动性能略逊于官方脚本）</td></tr></tbody></table><h2 id="🖱️-手动安装与系统要求"><a href="#🖱️-手动安装与系统要求" class="headerlink" title="🖱️ 手动安装与系统要求"></a>🖱️ 手动安装与系统要求</h2><p>你也可以选择从 GitHub 的<a href="https://github.com/denoland/deno/releases">发布页面</a>下载对应架构的 <code>.zip</code> 压缩包，解压后将 <code>deno.exe</code> 放在一个你方便管理的目录，并手动将其添加到系统 <code>PATH</code> 环境变量中。</p><p><strong>系统要求</strong>：请确保你的 Windows 系统是 <strong>Windows 10 版本 1709</strong> 或 <strong>Windows Server 2016 版本 1709</strong> 及更新的版本。</p><h2 id="⬆️-更新-Deno"><a href="#⬆️-更新-Deno" class="headerlink" title="⬆️ 更新 Deno"></a>⬆️ 更新 Deno</h2><p>当你需要更新到最新版本时，只需在终端中运行<code>deno upgrade</code>命令即可。</p>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-06-Deno-Windows-Install/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-06-Deno-Windows-Install/"/>
    <published>2026-08-06T07:00:41.000Z</published>
    <summary>
      <![CDATA[<h1 id="Deno-Windows-安装"><a href="#Deno-Windows-安装" class="headerlink" title="Deno Windows 安装"></a>Deno Windows 安装</h1><p><img src="https://]]>
    </summary>
    <title>Deno Windows Install</title>
    <updated>2026-08-16T17:42:11.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="PicGo-GitHub-图床搭建"><a href="#PicGo-GitHub-图床搭建" class="headerlink" title="PicGo GitHub 图床搭建"></a>PicGo GitHub 图床搭建</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/PicGo_2.3.0_GitHub_Config.png" alt="PicGo 2.3.0 GitHub Config"></p><h2 id="📝-笔记总结"><a href="#📝-笔记总结" class="headerlink" title="📝 笔记总结"></a>📝 笔记总结</h2><p>以下可以不用看，我已经卸载 PicGo。我现在使用的是直接保存图片，上传到 GitHub 仓库，然后通过链接地址引用。</p><p>例如：</p><p><code>https://cdn.jsdelivr.net/gh/用户名/仓库名@分支名/文件夹/图片名</code></p><p>或：</p><p><code>https://raw.githubusercontent.com/用户名/仓库名/分支名/图片名</code></p><p>之前的文章：<a href="https://shenjuexiao.cn/2026/2026-07-30-GitHub-raw-vs-cdn/">GitHub raw vs cdn</a></p><p>当然也可以使用 PicGo 进行 GitHub 图床设置。</p><h2 id="📖-内容来源"><a href="#📖-内容来源" class="headerlink" title="📖 内容来源"></a>📖 内容来源</h2><ul><li><a href="https://chat.deepseek.com/share/nqd68klgbx1jctyaz5">PicGo GitHub 图床</a>（<a href="https://chat.deepseek.com/a/chat/s/19094bf9-b94b-4885-97d0-a1d8066f257d">DeepSeek</a>）</li></ul><p>使用 <strong>PicGo + GitHub 图床</strong>，是一种很流行的免费方案，特别适合写博客、记笔记时管理图片。本质上是让 PicGo 这个工具，把你本地的图片自动上传到 GitHub 仓库，并生成一个在线的图片链接。</p><h2 id="🔧-创建-GitHub-仓库与-Token"><a href="#🔧-创建-GitHub-仓库与-Token" class="headerlink" title="🔧 创建 GitHub 仓库与 Token"></a>🔧 创建 GitHub 仓库与 Token</h2><p>首先需要在 GitHub 上创建一个用来存放图片的“图床仓库”，并生成一个<strong>访问令牌 (Token)</strong>，这是 PicGo 上传图片的“钥匙”。</p><h3 id="1-创建公开仓库"><a href="#1-创建公开仓库" class="headerlink" title="1.  创建公开仓库"></a>1.  创建公开仓库</h3><p>在 GitHub 点击右上角 <code>+</code> 号，选择 <code>New repository</code>。<strong>注意：仓库的可见性必须选 <code>Public</code></strong>，否则图片无法被公开访问。</p><h3 id="2-生成-Token"><a href="#2-生成-Token" class="headerlink" title="2.  生成 Token"></a>2.  生成 Token</h3><p>点击头像 → <code>Settings</code> → 左下角 <code>Developer settings</code> → <code>Personal access tokens</code> → <code>Tokens (classic)</code> → <code>Generate new token (classic)</code>。<br>    *   <strong>Note (名称)</strong>：随便填一个，比如 <code>PicGo-image</code>。<br>    *   <strong>Expiration (过期时间)</strong>：<strong>建议选 <code>No expiration</code>（永不过期）</strong>，不然过期后需要重新生成并更新配置。<br>    *   <strong>Select scopes (权限)</strong>：务必<strong>勾选 <code>repo</code></strong> 这个选项，这会赋予 PicGo 读写你仓库的权限。<br>    *   点击生成后，<strong>立即复制并妥善保存这个 Token</strong>（它只显示一次）。</p><h3 id="⚙️-配置-PicGo"><a href="#⚙️-配置-PicGo" class="headerlink" title="⚙️ 配置 PicGo"></a>⚙️ 配置 PicGo</h3><p>下载安装 PicGo 后，在“图床设置”里找到 GitHub 进行配置。</p><table><thead><tr><th align="left">配置项</th><th align="left">填写内容</th><th align="left">备注</th></tr></thead><tbody><tr><td align="left"><strong>设定仓库名</strong></td><td align="left"><code>你的GitHub用户名/仓库名</code></td><td align="left">例如：<code>zhangsan/my-image-bed</code></td></tr><tr><td align="left"><strong>设定分支名</strong></td><td align="left"><code>main</code></td><td align="left">2020年后GitHub新仓库默认分支为main</td></tr><tr><td align="left"><strong>设定Token</strong></td><td align="left">粘贴刚才保存的Token</td><td align="left"></td></tr><tr><td align="left"><strong>指定存储路径</strong></td><td align="left"><code>img/</code> (选填)</td><td align="left">图片将上传到仓库下的<code>img</code>文件夹，不填则传至根目录</td></tr><tr><td align="left"><strong>设定自定义域名</strong></td><td align="left"><code>https://cdn.jsdelivr.net/gh/你的用户名/仓库名@main</code></td><td align="left">这是最关键的一步，使用jsDelivr CDN加速访问，国内访问更快</td></tr></tbody></table><blockquote><p><strong>小提示</strong>：如果上传成功后图片无法显示，大概率是“自定义域名”配置有误。可以尝试将域名改为 <code>https://raw.githubusercontent.com/你的用户名/仓库名/main</code> 测试。</p></blockquote><h2 id="✍️-与-Typora-集成（可选）"><a href="#✍️-与-Typora-集成（可选）" class="headerlink" title="✍️ 与 Typora 集成（可选）"></a>✍️ 与 Typora 集成（可选）</h2><p>如果你用 Typora 写 Markdown，可以配置它调用 PicGo 实现“粘贴即上传”：</p><ol><li>打开 Typora，进入 <code>文件</code> → <code>偏好设置</code> → <code>图像</code>。</li><li><strong>插入图片时</strong>：选择 <code>上传图片</code>。</li><li><strong>上传服务</strong>：选择 <code>PicGo (app)</code>，并指定你 PicGo 的安装路径。</li><li>点击“验证图片上传选项”，成功后就可以在 Typora 里愉快地粘贴图片了。</li></ol><h2 id="⚠️-常见问题与排错"><a href="#⚠️-常见问题与排错" class="headerlink" title="⚠️ 常见问题与排错"></a>⚠️ 常见问题与排错</h2><ol><li><strong>Token 过期</strong>：这是最容易被忽略的问题。如果之前能用，突然有一天上传失败，可以先检查一下你的 GitHub Token 是否已过期。建议生成时直接选 <code>No expiration</code>。</li><li><strong>端口占用</strong>：PicGo 默认监听端口是 <code>36677</code>，如果同时开启了多个 PicGo 进程或其他加速工具（如 Steam++），可能会冲突，导致上传失败。</li><li><strong>网络与 Hosts</strong>：由于 GitHub 服务器在国外，网络波动可能影响访问。如果上传很慢或失败，可以尝试修改 Hosts 文件，将 <code>raw.githubusercontent.com</code> 等域名指向可用 IP。</li></ol>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-05-PicGo-GitHub-Config/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-05-PicGo-GitHub-Config/"/>
    <published>2026-08-04T18:47:43.000Z</published>
    <summary>
      <![CDATA[<h1 id="PicGo-GitHub-图床搭建"><a href="#PicGo-GitHub-图床搭建" class="headerlink" title="PicGo GitHub 图床搭建"></a>PicGo GitHub 图床搭建</h1><p><img src="]]>
    </summary>
    <title>PicGo GitHub Config</title>
    <updated>2026-08-18T22:32:08.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>shenjuexiao</name>
    </author>
    <content>
      <![CDATA[<h1 id="Valaxy-部署-GitHub-Pages"><a href="#Valaxy-部署-GitHub-Pages" class="headerlink" title="Valaxy 部署 GitHub Pages"></a>Valaxy 部署 GitHub Pages</h1><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Valaxy_Deploy_to_GitHub_Pages.png" alt="Valaxy Deploy to GitHub Pages"></p><h2 id="📖-内容来源"><a href="#📖-内容来源" class="headerlink" title="📖 内容来源"></a>📖 内容来源</h2><blockquote><p>✨ VALAXY<br>下一代静态博客框架<br>简洁、强大、高性能。遇见你一直想要的现代博客框架。</p></blockquote><ul><li><a href="https://valaxy.site/zh/">valaxy.site</a></li><li><a href="https://github.com/YunYouJun/valaxy/">YunYouJun&#x2F;valaxy</a></li><li><a href="https://valaxy.site/zh/guide/deploy">Valaxy  部署</a></li></ul><h2 id="⚙️-自带的-gh-pages-yml"><a href="#⚙️-自带的-gh-pages-yml" class="headerlink" title="⚙️ 自带的 gh-pages.yml"></a>⚙️ 自带的 <code>gh-pages.yml</code></h2><p><code>.github/workflows/gh-pages.yml</code></p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># gh-pages.yml</span></span><br><span class="line"></span><br><span class="line"><span class="attr">name:</span> <span class="string">GitHub</span> <span class="string">Pages</span></span><br><span class="line"></span><br><span class="line"><span class="attr">on:</span></span><br><span class="line">  <span class="attr">push:</span></span><br><span class="line">    <span class="attr">branches:</span></span><br><span class="line">      <span class="comment"># The branch where the project source code resides</span></span><br><span class="line">      <span class="comment"># 项目源代码所在的分支</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">main</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">master</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">valaxy</span></span><br><span class="line"></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">build:</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">$&#123;&#123;</span> <span class="string">matrix.os</span> <span class="string">&#125;&#125;</span></span><br><span class="line"></span><br><span class="line">    <span class="attr">strategy:</span></span><br><span class="line">      <span class="attr">matrix:</span></span><br><span class="line">        <span class="attr">node-version:</span> [<span class="string">lts/*</span>]</span><br><span class="line">        <span class="attr">os:</span> [<span class="string">ubuntu-latest</span>]</span><br><span class="line">      <span class="attr">fail-fast:</span> <span class="literal">false</span></span><br><span class="line"></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/checkout@v2</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Use</span> <span class="string">Node.js</span> <span class="string">$&#123;&#123;</span> <span class="string">matrix.node-version</span> <span class="string">&#125;&#125;</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/setup-node@v2</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">node-version:</span> <span class="string">$&#123;&#123;</span> <span class="string">matrix.node-version</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">registry-url:</span> <span class="string">https://registry.npmjs.org/</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">📦</span> <span class="string">Install</span> <span class="string">Dependencies</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">npm</span> <span class="string">i</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">🌌</span> <span class="string">Build</span> <span class="string">Valaxy</span> <span class="string">Blog</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">npm</span> <span class="string">run</span> <span class="string">build</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">🪤</span> <span class="string">Deploy</span> <span class="string">to</span> <span class="string">GitHub</span> <span class="string">Pages</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">peaceiris/actions-gh-pages@v3</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">github_token:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.GITHUB_TOKEN</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">publish_dir:</span> <span class="string">./dist</span></span><br><span class="line">          <span class="attr">force_orphan:</span> <span class="literal">true</span></span><br></pre></td></tr></table></figure><p>在使用 <code>pnpm create valaxy</code> 创建模版项目时，已内置文件 <code>.github/workflows/gh-pages.yml</code> 以实现 <code>GitHub Actions</code> 的自动部署工作流。</p><p>选择 <code>Github Repo</code>，打开 <code>Settings</code> -&gt; <code>Action</code> -&gt; <code>General</code> -&gt; <code>Workflow permissions</code>，选择 <code>read and write permissions</code>。<br>上传至 <code>GitHub Repo</code>，打开 <code>Settings</code> -&gt; <code>Pages</code>，选择 <code>gh-pages</code> 分支。<br><code>gh-pages</code> 已由 <code>.github/workflows/gh-pages.yml</code> 自动部署。</p><p>注意修改 <code>gh-pages.yml</code> 中的 <code>on.push.branches</code> 为你源代码所在的分支，默认为 <code>main</code>。</p><h2 id="❌-Error-Action-failed"><a href="#❌-Error-Action-failed" class="headerlink" title="❌ Error: Action failed"></a>❌ Error: Action failed</h2><p>Error: Action failed with &quot;The process ‘&#x2F;usr&#x2F;bin&#x2F;git’ failed with exit code 128&quot;</p><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Valaxy_Error_Action_failed.png" alt="Valaxy Error Action failed"></p><p>不知道为什么在同一个仓库使用 <code>github_token: $&#123;&#123; secrets.GITHUB_TOKEN &#125;&#125;</code> 还会权限不够。</p><h2 id="✅-解决方案"><a href="#✅-解决方案" class="headerlink" title="✅ 解决方案"></a>✅ 解决方案</h2><p>这个错误是因为 GitHub Actions 的默认 token 权限不足，无法推送到 <code>gh-pages</code> 分支。以下是几种解决方案：</p><h3 id="1：使用个人访问令牌"><a href="#1：使用个人访问令牌" class="headerlink" title="1：使用个人访问令牌"></a>1：使用个人访问令牌</h3><ul><li><p>生成 <code>Personal Access Token</code></p><ul><li>前往 <code>GitHub Settings</code> → <code>Developer settings</code> → <code>Personal access tokens</code> → <code>Tokens (classic)</code></li><li>生成新 token，勾选 <code>repo</code> 权限</li><li>复制生成的 <code>token</code></li></ul></li><li><p>在仓库中设置 <code>Secret</code></p><ul><li>前往仓库 <code>Settings</code> → <code>Secrets and variables</code> → <code>Actions</code></li><li>添加新的 <code>secret</code>，命名为 <code>PERSONAL_TOKEN</code>，值粘贴你的 <code>token</code></li></ul></li><li><p>修改 <code>workflow</code> 文件</p></li></ul><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Deploy</span> <span class="string">to</span> <span class="string">GitHub</span> <span class="string">Pages</span></span><br><span class="line">  <span class="attr">uses:</span> <span class="string">peaceiris/actions-gh-pages@v3</span></span><br><span class="line">  <span class="attr">with:</span></span><br><span class="line">    <span class="attr">personal_token:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.PERSONAL_TOKEN</span> <span class="string">&#125;&#125;</span></span><br><span class="line">    <span class="attr">publish_dir:</span> <span class="string">./dist</span></span><br><span class="line">    <span class="comment"># 其他配置...</span></span><br></pre></td></tr></table></figure><h3 id="2：使用-GitHub-自带的-GITHUB-TOKEN"><a href="#2：使用-GitHub-自带的-GITHUB-TOKEN" class="headerlink" title="2：使用 GitHub 自带的 GITHUB_TOKEN"></a>2：使用 GitHub 自带的 GITHUB_TOKEN</h3><p>修改 <code>workflow</code> 文件，添加写入权限：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">name:</span> <span class="string">Deploy</span></span><br><span class="line"></span><br><span class="line"><span class="attr">permissions:</span></span><br><span class="line">  <span class="attr">contents:</span> <span class="string">write</span></span><br><span class="line"></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">deploy:</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="comment"># ... 其他步骤</span></span><br><span class="line">      </span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Deploy</span> <span class="string">to</span> <span class="string">GitHub</span> <span class="string">Pages</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">peaceiris/actions-gh-pages@v3</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">github_token:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.GITHUB_TOKEN</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">publish_dir:</span> <span class="string">./dist</span></span><br></pre></td></tr></table></figure><h2 id="⚠️-补充：关于-Node-警告的解决方案"><a href="#⚠️-补充：关于-Node-警告的解决方案" class="headerlink" title="⚠️ 补充：关于 Node 警告的解决方案"></a>⚠️ 补充：关于 Node 警告的解决方案</h2><p>在 <code>workflow</code> 中添加环境变量：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">env:</span></span><br><span class="line">  <span class="attr">ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION:</span> <span class="literal">true</span></span><br></pre></td></tr></table></figure><p>或者在部署步骤中指定：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Deploy</span> <span class="string">to</span> <span class="string">GitHub</span> <span class="string">Pages</span></span><br><span class="line">  <span class="attr">uses:</span> <span class="string">peaceiris/actions-gh-pages@v3</span></span><br><span class="line">  <span class="attr">with:</span></span><br><span class="line">    <span class="attr">github_token:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.GITHUB_TOKEN</span> <span class="string">&#125;&#125;</span></span><br><span class="line">    <span class="attr">publish_dir:</span> <span class="string">./dist</span></span><br><span class="line">    <span class="comment"># 在 env 中设置</span></span><br><span class="line">  <span class="attr">env:</span></span><br><span class="line">    <span class="attr">ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION:</span> <span class="literal">true</span></span><br></pre></td></tr></table></figure><p>如果以上方案都不行，请检查：</p><ol><li>仓库是否属于组织？可能需要调整权限设置</li><li>是否启用了分支保护规则？需要临时禁用或配置允许强制推送</li></ol><h2 id="📝-修改后的-gh-pages-yml"><a href="#📝-修改后的-gh-pages-yml" class="headerlink" title="📝 修改后的 gh-pages.yml"></a>📝 修改后的 <code>gh-pages.yml</code></h2><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># valaxy 自带 gh-pages.yml</span></span><br><span class="line"><span class="comment"># valaxy.site/zh/guide/deploy</span></span><br><span class="line"></span><br><span class="line"><span class="attr">name:</span> <span class="string">GitHub</span> <span class="string">Pages</span></span><br><span class="line"></span><br><span class="line"><span class="attr">on:</span></span><br><span class="line">  <span class="attr">push:</span></span><br><span class="line">    <span class="attr">branches:</span></span><br><span class="line">      <span class="comment"># The branch where the project source code resides</span></span><br><span class="line">      <span class="comment"># 项目源代码所在的分支</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">main</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">master</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">valaxy</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 20260804</span></span><br><span class="line"><span class="comment"># 增加权限</span></span><br><span class="line"><span class="attr">permissions:</span></span><br><span class="line">  <span class="attr">contents:</span> <span class="string">write</span></span><br><span class="line">  <span class="attr">pages:</span> <span class="string">write</span></span><br><span class="line">  <span class="attr">id-token:</span> <span class="string">write</span></span><br><span class="line"></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">build:</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">$&#123;&#123;</span> <span class="string">matrix.os</span> <span class="string">&#125;&#125;</span></span><br><span class="line"></span><br><span class="line">    <span class="attr">strategy:</span></span><br><span class="line">      <span class="attr">matrix:</span></span><br><span class="line">        <span class="attr">node-version:</span> [<span class="string">lts/*</span>]</span><br><span class="line">        <span class="attr">os:</span> [<span class="string">ubuntu-latest</span>]</span><br><span class="line">      <span class="attr">fail-fast:</span> <span class="literal">false</span></span><br><span class="line"></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/checkout@v2</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Use</span> <span class="string">Node.js</span> <span class="string">$&#123;&#123;</span> <span class="string">matrix.node-version</span> <span class="string">&#125;&#125;</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/setup-node@v2</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">node-version:</span> <span class="string">$&#123;&#123;</span> <span class="string">matrix.node-version</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">registry-url:</span> <span class="string">https://registry.npmjs.org/</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">📦</span> <span class="string">Install</span> <span class="string">Dependencies</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">npm</span> <span class="string">i</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">🌌</span> <span class="string">Build</span> <span class="string">Valaxy</span> <span class="string">Blog</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">npm</span> <span class="string">run</span> <span class="string">build</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">🪤</span> <span class="string">Deploy</span> <span class="string">to</span> <span class="string">GitHub</span> <span class="string">Pages</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">peaceiris/actions-gh-pages@v3</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">github_token:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.GITHUB_TOKEN</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">publish_dir:</span> <span class="string">./dist</span></span><br><span class="line">          <span class="attr">force_orphan:</span> <span class="literal">true</span></span><br></pre></td></tr></table></figure><p><img src="https://cdn.jsdelivr.net/gh/shenjuexiao/shenjuexiao@main/GitHub_png/Valaxy_build_lts_ubuntu-lastest.png" alt="Valaxy build lts ubuntu-lastest"></p>]]>
    </content>
    <id>https://shenjuexiao.com/2026/2026-08-04-Valaxy-Deploy-to-GitHub-Pages/</id>
    <link href="https://shenjuexiao.com/2026/2026-08-04-Valaxy-Deploy-to-GitHub-Pages/"/>
    <published>2026-08-04T01:03:45.000Z</published>
    <summary>
      <![CDATA[<h1 id="Valaxy-部署-GitHub-Pages"><a href="#Valaxy-部署-GitHub-Pages" class="headerlink" title="Valaxy 部署 GitHub Pages"></a>Valaxy 部署 GitHub Pag]]>
    </summary>
    <title>Valaxy Deploy to GitHub Pages</title>
    <updated>2026-08-18T22:41:07.000Z</updated>
  </entry>
</feed>
