<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>次世代 Hugo</title>
  <icon>https://hugoneo.ai/icon.png</icon>
  
  <link href="https://hugoneo.ai/atom.xml" rel="self"/>
  
  <link href="https://hugoneo.ai/"/>
  <updated>2026-05-09T06:24:32.745Z</updated>
  <id>https://hugoneo.ai/</id>
  
  <author>
    <name>Sam Xiao</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>Claude Code for WebStorm 初體驗</title>
    <link href="https://hugoneo.ai/claude/general/setup/webstorm/"/>
    <id>https://hugoneo.ai/claude/general/setup/webstorm/</id>
    <published>2026-05-08T23:59:13.000Z</published>
    <updated>2026-05-09T06:24:32.745Z</updated>
    
    <content type="html"><![CDATA[<p>在 WebStorm 內使用 Claude Code。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>WebStorm 2026.1.1<br>Claude Code [Bete]</p><h2 id="Claude-Code-Plugin"><a href="#Claude-Code-Plugin" class="headerlink" title="Claude Code Plugin"></a>Claude Code Plugin</h2><p><img src="/images/claude/general/setup/webstorm/ws01.webp" alt="ws01"></p><ul><li>安裝 Anthropic 官方的 plugin</li></ul><p><img src="/images/claude/general/setup/webstorm/ws02.webp" alt="ws02"></p><ul><li>開啟 terminal，輸入 <code>claude</code></li><li>Claude Code 順利與 WebStorm 接上</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li>安裝 Plugin 之前必須先安裝 Claude CLI</li><li>Claude Code 尚未以 GUI 支援 WebStorm，目前僅提供 WebStorm 與 Cluade CLI 整合</li></ul><h2 id="Reference"><a href="#Reference" class="headerlink" title="Reference"></a>Reference</h2><p><a href="https://moksaweb.com/" target="_blank" rel="noopener">Moska</a>, <a href="https://moksaweb.com/claude-code-jetbrains-integration/" target="_blank" rel="noopener">Claude Code JetBrains Integration</a></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;在 WebStorm 內使用 Claude Code。&lt;/p&gt;</summary>
    
    
    
    
    <category term="Claude" scheme="https://hugoneo.ai/tags/Claude/"/>
    
  </entry>
  
  <entry>
    <title>Claude Desktop 初體驗</title>
    <link href="https://hugoneo.ai/claude/general/setup/desktop/"/>
    <id>https://hugoneo.ai/claude/general/setup/desktop/</id>
    <published>2026-05-08T15:46:36.000Z</published>
    <updated>2026-05-09T12:58:44.592Z</updated>
    
    <content type="html"><![CDATA[<p>以 Desktop 方式使用 Claude Code。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>Claude Desktop 1.6</p><h2 id="Homebrew"><a href="#Homebrew" class="headerlink" title="Homebrew"></a>Homebrew</h2><pre class="line-numbers highlight language-shell"><code class="language-shell">$ brew install --cask claude<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>使用 Homebrew 安裝 Claude Desktop</li></ul><h2 id="Claude-Desktop"><a href="#Claude-Desktop" class="headerlink" title="Claude Desktop"></a>Claude Desktop</h2><p><img src="/images/claude/general/setup/desktop/desktop01.webp" alt="desktop01"></p><ul><li>執行 Claude Desktop</li></ul><h2 id="Sign-In"><a href="#Sign-In" class="headerlink" title="Sign In"></a>Sign In</h2><p><img src="/images/claude/general/setup/desktop/desktop02.webp" alt="desktop02"></p><ul><li>以 Google Account 登入 Claude</li></ul><h2 id="Welcome"><a href="#Welcome" class="headerlink" title="Welcome"></a>Welcome</h2><p><img src="/images/claude/general/setup/desktop/desktop03.webp" alt="desktop03"></p><ul><li>Claude Desktop 設定成功</li></ul><h2 id="Preference"><a href="#Preference" class="headerlink" title="Preference"></a>Preference</h2><p><img src="/images/claude/general/setup/desktop/desktop04.webp" alt="desktop04"></p><ul><li><code>Appearance</code>：<code>System</code></li><li><code>Chat font</code>：<code>System</code></li><li><code>Response completions</code>：<code>On</code></li><li><code>Code notifications</code>：<code>On</code></li><li><code>Code permission requests</code>：<code>On</code></li><li><code>Emails from Claude Code on the web</code>：<code>On</code></li><li><code>Dispatch messages</code>：<code>On</code></li></ul><h2 id="General-Desktop-Settings"><a href="#General-Desktop-Settings" class="headerlink" title="General Desktop Settings"></a>General Desktop Settings</h2><p><img src="/images/claude/general/setup/desktop/desktop05.webp" alt="desktop05"></p><ul><li><code>Run on startup</code>：<code>Off</code></li><li><code>Quick access shortcut</code>：<code>No shortcut</code></li><li><code>Voice shortcut</code>：<code>No shortcut</code></li><li><code>Menu bar</code>：<code>Off</code></li><li><code>Keep computer awake</code>：<code>Off</code></li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;以 Desktop 方式使用 Claude Code。&lt;/p&gt;</summary>
    
    
    
    
    <category term="Claude" scheme="https://hugoneo.ai/tags/Claude/"/>
    
  </entry>
  
  <entry>
    <title>Claude CLI 初體驗</title>
    <link href="https://hugoneo.ai/claude/general/setup/cli/"/>
    <id>https://hugoneo.ai/claude/general/setup/cli/</id>
    <published>2026-05-03T08:05:37.000Z</published>
    <updated>2026-05-09T06:24:32.745Z</updated>
    
    <content type="html"><![CDATA[<p>以 CLI 方式使用 Claude Code。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>Claude CLI 2.1.118</p><h2 id="Homebrew"><a href="#Homebrew" class="headerlink" title="Homebrew"></a>Homebrew</h2><pre class="line-numbers highlight language-shell"><code class="language-shell">$ brew install --cask claude-code<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>使用 Homebrew 安裝 Claude CLI</li></ul><h2 id="Claude-CLI"><a href="#Claude-CLI" class="headerlink" title="Claude CLI"></a>Claude CLI</h2><p><img src="/images/claude/general/setup/cli/cli01.webp" alt="code01"></p><pre class="line-numbers highlight language-shell"><code class="language-shell">$ claude<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>進入專案目錄，輸入 <code>claude</code> 執行 Claude CLI</li></ul><h2 id="Theme"><a href="#Theme" class="headerlink" title="Theme"></a>Theme</h2><p><img src="/images/claude/general/setup/cli/cli02.webp" alt="code02"></p><ul><li>選擇 <code>Dark mode</code></li></ul><h2 id="Claude-Account"><a href="#Claude-Account" class="headerlink" title="Claude Account"></a>Claude Account</h2><p><img src="/images/claude/general/setup/cli/cli03.webp" alt="code03"></p><ul><li>選擇 <code>Claude account with subscription</code></li></ul><p><img src="/images/claude/general/setup/cli/cli04.webp" alt="code04"></p><ul><li><code>Continue with Google</code>：以 Google ID 登入</li></ul><p><img src="/images/claude/general/setup/cli/cli05.webp" alt="code05"></p><ul><li>登入 Claude 帳號成功</li></ul><h2 id="Trust-Folder"><a href="#Trust-Folder" class="headerlink" title="Trust Folder"></a>Trust Folder</h2><p><img src="/images/claude/general/setup/cli/cli06.webp" alt="code06"></p><ul><li><code>Yes, I trust this folder</code>：讓 Claude CLI 管理此專案目錄</li></ul><h2 id="Welcome"><a href="#Welcome" class="headerlink" title="Welcome"></a>Welcome</h2><p><img src="/images/claude/general/setup/cli/cli07.webp" alt="code07"></p><ul><li>Claude CLI 設定成功</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li>CLI 為 Claude Code 的基礎，可在此學到 Claude Code 核心技術</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;以 CLI 方式使用 Claude Code。&lt;/p&gt;</summary>
    
    
    
    
    <category term="Claude" scheme="https://hugoneo.ai/tags/Claude/"/>
    
  </entry>
  
  <entry>
    <title>支援 Pointfree 的 Function</title>
    <link href="https://hugoneo.ai/hugo/general/pointfree/"/>
    <id>https://hugoneo.ai/hugo/general/pointfree/</id>
    <published>2026-05-01T15:51:44.000Z</published>
    <updated>2026-05-01T15:53:37.755Z</updated>
    
    <content type="html"><![CDATA[<p>Hugo 並不是所有 Function 都支援 Pointfree，本文整理常用支援 Pointfree 的 Function。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>Hugo 0.161.1</p><h2 id="文字與內容處理"><a href="#文字與內容處理" class="headerlink" title="文字與內容處理"></a>文字與內容處理</h2><p>這是 Pipeline 最常用的場景，用於鏈接多個過濾器。</p><ul><li><code>markdownify()</code>：將字串轉為 HTML</li><li><code>findRE()</code> &#x2F; <code>replaceRE()</code>：正規表達式搜尋與替換</li><li><code>humanize()</code>：將字串轉為易讀格式</li><li><code>lower()</code> &#x2F; <code>upper()</code> &#x2F; <code>title()</code>：大小寫轉換</li><li><code>truncate()</code>：截斷文字</li></ul><h2 id="資源與圖片處理"><a href="#資源與圖片處理" class="headerlink" title="資源與圖片處理"></a>資源與圖片處理</h2><p>Hugo 的資源管道 (Hugo Pipes) 完全建立在 Pipeline 基礎上。</p><ul><li><code>resources.Get()</code>：獲取資源</li><li><code>fingerprint()</code>：加入雜湊值 (用於快取清除)</li><li><code>minify()</code>：壓縮 HTML&#x2F;CSS&#x2F;JavaScript</li><li><code>toCSS()</code>：將 SASS&#x2F;SCSS 編譯為 CSS</li><li><code>Resize()</code> &#x2F; <code>Fill()</code> &#x2F;  <code>Fit()</code> &#x2F; <code>Filter()</code>：圖片縮放</li></ul><h2 id="集合與排序"><a href="#集合與排序" class="headerlink" title="集合與排序"></a>集合與排序</h2><p>對頁面群組或陣列進行篩選。</p><ul><li><code>where()</code>：過濾集合</li><li><code>sort()</code>：排序</li><li><code>first()</code> &#x2F; <code>last()</code>：取前 N 個或後 N 個項目</li><li><code>group()</code>：分組</li></ul><h2 id="安全與編碼"><a href="#安全與編碼" class="headerlink" title="安全與編碼"></a>安全與編碼</h2><p>為了防止 XSS 攻擊或符合 URL 格式。</p><ul><li><code>safeHTML()</code>：宣告字串為安全 HTML (不進行轉譯)</li><li><code>safeJS()</code>：處理 Javascript</li><li><code>urlize()</code>：將字串轉換為 URL 友善格式。</li><li><code>base64Encode()</code> &#x2F; <code>base64Decode()</code>：Base64 編碼轉換</li></ul><h2 id="邏輯判斷與預設值"><a href="#邏輯判斷與預設值" class="headerlink" title="邏輯判斷與預設值"></a>邏輯判斷與預設值</h2><ul><li><code>default()</code>：當值為空時給予預設值</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;Hugo 並不是所有 Function 都支援 Pointfree，本文整理常用支援 Pointfree 的 Function。&lt;/p&gt;</summary>
    
    
    
    
    <category term="Hugo" scheme="https://hugoneo.ai/tags/Hugo/"/>
    
  </entry>
  
  <entry>
    <title>Hugo 之 4 大特色</title>
    <link href="https://hugoneo.ai/hugo/general/feature/"/>
    <id>https://hugoneo.ai/hugo/general/feature/</id>
    <published>2026-05-01T15:12:01.000Z</published>
    <updated>2026-05-01T15:18:06.187Z</updated>
    
    <content type="html"><![CDATA[<p>相較於其他 SSG，Hugo 有 4 大特色。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>Hugo 0.161.1</p><h2 id="快"><a href="#快" class="headerlink" title="快"></a>快</h2><p>無論其他 SSG 再怎麼進化，其最大的問題就是隨著 markdown 檔案越來越多，編譯成 HTML 的速度會斷崖式地變慢，尤其以 Node.js 為基礎的 SSG 最為明顯。Hugo 能發揮 CPU 多核心的優勢，不用擔心 markdown 檔案數量問題。</p><h2 id="完整-Toolchain"><a href="#完整-Toolchain" class="headerlink" title="完整 Toolchain"></a>完整 Toolchain</h2><p>其他 SSG 大都要依賴 Webpack、Vite、NPM 之類工具，或一堆 plugin 解決 HTML&#x2F;CSS&#x2F;JavaScript 整合問題；Hugo 則內建完整 Toolchain，連 Tailwind CSS 也是原生支援。</p><h2 id="Function-Pipeline"><a href="#Function-Pipeline" class="headerlink" title="Function Pipeline"></a>Function Pipeline</h2><p>Hugo 是少數直接支援 Function Pipeline 的 SSG，雖然不是所有的 function 都支援 pipeline，但常用的 function 都可直接使用 pipeline，非常難得。</p><h2 id="Context"><a href="#Context" class="headerlink" title="Context"></a>Context</h2><p>Hugo 繼承於 Go 的 <code>text/template</code>，可直接使用 <code>.</code> 存取目前 context，這使得 codebase 非常精簡，為 Hugo 一大特色。</p><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li>很多人嫌 Hugo 的 Go Template 語法怪異，學習門檻高，這是以 JavaScript 的角度來思考，若以 Go 的角度，Hugo 其實最接近 Go 習慣，還支援難得的 Function Pipeline</li><li>儘管 Hugo 的 DX 稍差，但 SSG 最重要的就是速度，這才是 Hugo 最大特色</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;相較於其他 SSG，Hugo 有 4 大特色。&lt;/p&gt;</summary>
    
    
    
    
    <category term="Hugo" scheme="https://hugoneo.ai/tags/Hugo/"/>
    
  </entry>
  
  <entry>
    <title>我的 WebStorm 基本設定</title>
    <link href="https://hugoneo.ai/webstorm/general/setup/"/>
    <id>https://hugoneo.ai/webstorm/general/setup/</id>
    <published>2026-04-22T03:08:58.000Z</published>
    <updated>2026-05-09T08:02:36.733Z</updated>
    
    <content type="html"><![CDATA[<p>本文記錄我的 WebStorm 基本設定。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>ＷebStorm 2026.1</p><h2 id="Shell-Script-Name"><a href="#Shell-Script-Name" class="headerlink" title="Shell Script Name"></a>Shell Script Name</h2><p><img src="/images/webstorm/general/setup/ws04.webp" alt="ws04"></p><ul><li><code>Update the tool automatically</code>：<code>On</code></li><li><code>Shell script name</code>：<code>ws</code></li></ul><h2 id="Appearance"><a href="#Appearance" class="headerlink" title="Appearance"></a>Appearance</h2><p><img src="/images/webstorm/general/setup/ws01.webp" alt="ws01"></p><ul><li><code>Theme</code>：<code>Darcula</code></li><li><code>Use custom font</code><ul><li><code>13</code>：<code>Dialog 16</code></li><li><code>15</code>：<code>Dialog 17</code></li><li><code>16</code>：<code>Dialog 18</code></li></ul></li></ul><h2 id="Compact-Mode"><a href="#Compact-Mode" class="headerlink" title="Compact Mode"></a>Compact Mode</h2><p><img src="/images/webstorm/general/setup/ws09.webp" alt="ws09"></p><ul><li><code>Compact mode</code>：<code>On</code></li></ul><h2 id="Editor-Font"><a href="#Editor-Font" class="headerlink" title="Editor Font"></a>Editor Font</h2><p><img src="/images/webstorm/general/setup/ws02.webp" alt="ws02"></p><ul><li><code>Font</code>：<code>Fira Code</code></li><li><code>Size</code>：<ul><li><code>13</code>：<code>22.0</code></li><li><code>15</code>：<code>21.0</code></li><li><code>16</code>：<code>23.0</code></li></ul></li><li><code>Line height</code>：<code>1.2</code></li><li><code>Main weight</code>：<code>Medium</code></li><li><code>Fallback font</code>：<code>Menlo</code></li></ul><h2 id="Backgroud-Color"><a href="#Backgroud-Color" class="headerlink" title="Backgroud Color"></a>Backgroud Color</h2><p><img src="/images/webstorm/general/setup/ws14.webp" alt="ws14"></p><ul><li><code>Background</code>：<code>#2B2B2B</code></li></ul><h2 id="Console-Font"><a href="#Console-Font" class="headerlink" title="Console Font"></a>Console Font</h2><p><img src="/images/webstorm/general/setup/ws03.webp" alt="ws03"></p><ul><li><code>Use console font instead of the default</code>：<code>On</code></li><li><code>Font</code>：<code>Menlo</code></li><li><code>Size</code>：<ul><li><code>13&quot;</code>：<code>20</code> </li><li><code>15&quot;</code>：<code>21</code></li><li><code>16&quot;</code>：<code>23</code></li></ul></li><li><code>Line height</code>：<code>1.0</code></li></ul><h2 id="Code-Folding"><a href="#Code-Folding" class="headerlink" title="Code Folding"></a>Code Folding</h2><p><img src="/images/webstorm/general/setup/ws16.webp" alt="ws16"></p><ul><li><code>General</code><ul><li><code>File header</code>：<code>On</code></li><li><code>Imports</code>：<code>On</code></li><li><code>Documentation comments</code>：<code>On</code></li><li><code>Method bodies</code>：<code>Off</code></li><li><code>Custom folding regions</code>：<code>On</code></li></ul></li></ul><h2 id="Appearance-1"><a href="#Appearance-1" class="headerlink" title="Appearance"></a>Appearance</h2><p><img src="/images/webstorm/general/setup/ws12.webp" alt="ws12"></p><ul><li><code>Use block caret</code>：<code>On</code></li><li><code>Highlight occurrences of selected text</code>：<code>On</code></li><li><code>Show hard wrap and visual guides (configured in Code Style options)</code>：<code>On</code></li><li><code>Show line numbers</code>：<code>Absolute</code></li><li><code>Show method separators</code>：<code>On</code></li><li><code>Show whitespaces</code>：<code>On</code><ul><li><code>Leading</code>：<code>On</code></li><li><code>Inner</code>：<code>On</code></li><li><code>Trailing</code>：<code>On</code></li><li><code>Selection</code>：<code>On</code></li></ul></li><li><code>Show indent guides</code>：<code>Off</code></li><li><code>Show CSS color preview as background</code>：<code>On</code></li></ul><h2 id="Breadcrumbs"><a href="#Breadcrumbs" class="headerlink" title="Breadcrumbs"></a>Breadcrumbs</h2><p><img src="/images/webstorm/general/setup/ws15.webp" alt="ws15"></p><ul><li><code>Show breadcrumbs</code>：<code>On</code><ul><li><code>Placement</code>：<code>Bottom</code></li></ul></li><li><code>Languages</code><ul><li>CSS</li><li>HTML</li><li>JavaScript</li><li>JSON</li><li>Sass</li><li>SCSS</li><li>YAML</li></ul></li></ul><h2 id="Editor-Tabs"><a href="#Editor-Tabs" class="headerlink" title="Editor Tabs"></a>Editor Tabs</h2><p><img src="/images/webstorm/general/setup/ws05.webp" alt="ws05"></p><ul><li><code>Tab placement</code>：<code>None</code></li></ul><h2 id="Gutter-Icons"><a href="#Gutter-Icons" class="headerlink" title="Gutter Icons"></a>Gutter Icons</h2><p><img src="/images/webstorm/general/setup/ws13.webp" alt="ws13"></p><ul><li><code>Show gutter icons</code>：<code>Off</code></li></ul><h2 id="Sticky-Lines"><a href="#Sticky-Lines" class="headerlink" title="Sticky Lines"></a>Sticky Lines</h2><p><img src="/images/webstorm/general/setup/ws20.webp" alt="ws20"></p><ul><li><code>Show sticky lines while scrolling</code>：<code>Off</code></li></ul><h2 id="Appearance-2"><a href="#Appearance-2" class="headerlink" title="Appearance"></a>Appearance</h2><p><img src="/images/webstorm/general/setup/ws06.webp" alt="ws06"></p><ul><li><code>Compact Mode</code>：<code>On</code></li><li><code>Toolbar</code>：<code>Off</code></li><li><code>Navigation Bar</code>：<code>Top</code></li><li><code>Tool Window Bars</code>：<code>Off</code></li><li><code>Status Bar</code>：<code>Off</code></li></ul><h2 id="Active-Editor"><a href="#Active-Editor" class="headerlink" title="Active Editor"></a>Active Editor</h2><p><img src="/images/webstorm/general/setup/ws07.webp" alt="ws07"></p><ul><li><code>Show Whitespace</code>：<code>On</code></li><li><code>Show Line Numbers</code>：<code>On</code></li><li><code>Show Import Popups</code>：<code>On</code></li><li><code>Show Breadcrumbs</code>：<code>On</code></li></ul><h2 id="Project-Options"><a href="#Project-Options" class="headerlink" title="Project Options"></a>Project Options</h2><p><img src="/images/webstorm/general/setup/ws08.webp" alt="ws08"></p><ul><li><code>Behavior</code><ul><li><code>Enable Preview Tab</code>：<code>On</code></li><li><code>Open Files with Single Click</code>：<code>On</code></li><li><code>Open Directories with Single Click</code>：<code>On</code></li><li><code>Always Select Openned File</code>：<code>On</code></li></ul></li></ul><p><img src="/images/webstorm/general/setup/ws18.webp" alt="ws18"></p><ul><li><code>Appearance</code><ul><li><code>Excluded Files</code>：<code>Off</code></li><li><code>Scratches and Consoles</code>：<code>Off</code></li></ul></li></ul><h2 id="Inlay-Hints"><a href="#Inlay-Hints" class="headerlink" title="Inlay Hints"></a>Inlay Hints</h2><p><img src="/images/webstorm/general/setup/ws10.webp" alt="ws10"></p><ul><li><code>Code vision</code>：<code>Off</code></li><li><code>Parameter names</code>：<code>Off</code></li><li><code>Types</code>：<code>Off</code></li><li><code>Values</code>：<code>Off</code></li><li><code>Method chains</code>：<code>Off</code></li><li><code>Other</code>：<code>Off</code></li></ul><h2 id="Tool-Windows"><a href="#Tool-Windows" class="headerlink" title="Tool Windows"></a>Tool Windows</h2><p><img src="/images/webstorm/general/setup/ws11.webp" alt="ws11"></p><ul><li><code>Commit</code>：⌘ 0</li><li><code>Project</code>：⌘ 1</li><li><code>Bookmarks</code>：⌘ 2</li><li><code>TODO</code>：⌘ 6</li><li><code>Problems</code>：⌘ 7</li><li><code>Terminal</code>：⌘ 8</li><li><code>Git</code>：⌘ 9</li></ul><h2 id="Keymap"><a href="#Keymap" class="headerlink" title="Keymap"></a>Keymap</h2><ul><li><code>Go to File</code>：⌘ P</li></ul><h2 id="Plugins"><a href="#Plugins" class="headerlink" title="Plugins"></a>Plugins</h2><p><img src="/images/webstorm/general/setup/ws19.webp" alt="ws19"></p><ul><li>Claude Code</li><li>GitHub Copilot</li></ul><p><img src="/images/webstorm/general/setup/ws17.webp" alt="ws18"></p><ul><li><code>Deployment</code>：<code>Disable all</code></li></ul><p><img src="/images/webstorm/general/setup/ws22.webp" alt="ws22"></p><ul><li><code>IDE Localization</code>：<code>Disable all</code></li></ul><p><img src="/images/webstorm/general/setup/ws23.webp" alt="ws23"></p><ul><li><code>JavaScript Debugger</code>：<code>On</code></li><li><code>JavaScript Intention Power Pack</code>：<code>On</code></li><li><code>Node.js</code>：<code>On</code></li></ul><p><img src="/images/webstorm/general/setup/ws24.webp" alt="ws24"></p><ul><li><code>Keymap</code>：<code>Disable all</code></li></ul><p><img src="/images/webstorm/general/setup/ws25.webp" alt="ws25"></p><ul><li><code>Gherkin</code>：<code>Off</code></li></ul><p><img src="/images/webstorm/general/setup/ws26.webp" alt="ws26"></p><ul><li><code>Remote Development</code>：<code>Disable all</code></li></ul><p><img src="/images/webstorm/general/setup/ws27.webp" alt="ws27"></p><ul><li><code>CSS</code>：<code>On</code></li><li><code>Sass</code>：<code>On</code></li></ul><p><img src="/images/webstorm/general/setup/ws28.webp" alt="ws28"></p><ul><li><code>EJS</code>：<code>On</code></li></ul><p><img src="/images/webstorm/general/setup/ws29.webp" alt="ws29"></p><ul><li><code>UI</code>：<code>Disable all</code></li></ul><p><img src="/images/webstorm/general/setup/ws30.webp" alt="ws30"></p><ul><li><code>Git</code>：<code>On</code></li><li><code>GitHub</code>：<code>On</code></li></ul><p><img src="/images/webstorm/general/setup/ws31.webp" alt="ws31"></p><ul><li><code>File Watchers</code>：<code>Off</code></li><li><code>IDE Features Trainer</code>：<code>Off</code></li><li><code>Qodana</code>：<code>Off</code></li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;本文記錄我的 WebStorm 基本設定。&lt;/p&gt;</summary>
    
    
    
    
    <category term="WebStorm" scheme="https://hugoneo.ai/tags/WebStorm/"/>
    
  </entry>
  
  <entry>
    <title>使用 WebStorm 開發 Hugo (Modern CSS)</title>
    <link href="https://hugoneo.ai/webstorm/lib/hugo-neo/"/>
    <id>https://hugoneo.ai/webstorm/lib/hugo-neo/</id>
    <published>2026-04-21T23:56:13.000Z</published>
    <updated>2026-04-26T15:13:10.557Z</updated>
    
    <content type="html"><![CDATA[<p>WebStorm 目前並沒有原生支援 Hugo，須另外安裝 <code>Smart Hugo</code> plugin，且不再使用 Prettier 與 Stylelint，直接使用 WebStorm 內建功能，打造 Zero Dependency 與 No Node.js 開發環境。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>WebStorm 2026.1</p><h2 id="Smart-Hugo"><a href="#Smart-Hugo" class="headerlink" title="Smart Hugo"></a>Smart Hugo</h2><p><img src="/images/webstorm/lib/hugo-neo/neo01.webp" alt="hugo01"></p><p><em><strong>Settings -&gt; Plugins</strong></em></p><ul><li><code>Smart Hugo</code>：支援 Go Template</li></ul><p><img src="/images/webstorm/lib/hugo-neo/neo13.webp" alt="hugo13"></p><ul><li><code>TOML</code>：支援 Hugo 設定檔格式</li></ul><h2 id="Project-Directories"><a href="#Project-Directories" class="headerlink" title="Project Directories"></a>Project Directories</h2><p><img src="/images/webstorm/lib/hugo-neo/neo02.webp" alt="hugo04"></p><p><em><strong>Settings -&gt; Directories</strong></em></p><ul><li><code>Resource Root</code>：<ul><li><code>assets</code>：放置 CSS、JavaScript 與 JSON</li></ul></li><li><code>Excluded</code>：<ul><li><code>.idea</code>：WebStorm 的暫存檔存放目錄</li><li><code>public</code>：<code>hugo build</code> 之後的 HTML&#x2F;CSS&#x2F;JavaScript</li><li><code>resources</code>：<code>hugo server</code> 時所建立的暫存目錄</li></ul></li><li><code>Exclude Files</code>：<ul><li><code>.hugo_build.lock</code>：Hugo build 所建立的 lock 檔</li></ul></li></ul><p><img src="/images/webstorm/lib/hugo-neo/neo14.webp" alt="neo14"></p><ul><li>Project 不顯示 Excluded</li></ul><h2 id="Disable-Prettier"><a href="#Disable-Prettier" class="headerlink" title="Disable Prettier"></a>Disable Prettier</h2><p><img src="/images/webstorm/lib/hugo-neo/neo03.webp" alt="hugo03"></p><p><em><strong>Settings -&gt; Languages &amp; Frameworks -&gt; JavaScript -&gt; Prettier</strong></em></p><ul><li><code>Disable Prettier</code>：<code>On</code></li></ul><h2 id="Disable-Stylelint"><a href="#Disable-Stylelint" class="headerlink" title="Disable Stylelint"></a>Disable Stylelint</h2><p><img src="/images/webstorm/lib/hugo-neo/neo04.webp" alt="hugo04"></p><p><em><strong>Settings -&gt; Languages &amp; Frameworks -&gt; Style Sheets -&gt; Stylelint</strong></em></p><ul><li><code>Enable</code>：<code>Off</code></li></ul><h2 id="Enable-EditorConfig"><a href="#Enable-EditorConfig" class="headerlink" title="Enable EditorConfig"></a>Enable EditorConfig</h2><p><img src="/images/webstorm/lib/hugo-neo/neo12.webp" alt="hugo12"></p><p><em><strong>System -&gt; Editor -&gt; Code Style</strong></em></p><ul><li><code>Enable EditorConfig support</code>：<code>On</code></li></ul><h2 id="HTML-Style"><a href="#HTML-Style" class="headerlink" title="HTML Style"></a>HTML Style</h2><p><img src="/images/webstorm/lib/hugo-neo/neo06.webp" alt="hugo06"></p><p><em><strong>Settings -&gt; Editor -&gt; Code Style -&gt; HTML -&gt; Tabs and Indent</strong></em></p><ul><li><code>Tab size</code>：<code>2</code></li><li><code>Indent</code>：<code>2</code></li><li><code>Continuation indent</code>：<code>2</code></li></ul><p><img src="/images/webstorm/lib/hugo-neo/neo07.webp" alt="hugo07"></p><p><em><strong>Settings -&gt; Editor -&gt; Code Style -&gt; HTML -&gt; Other</strong></em></p><ul><li><code>Do not indent children of</code>：<code>head</code>, <code>tbody</code>, <code>tfoot</code></li><li><code>Keep white spaces inside</code>：<code>span</code>, <code>pre</code>, <code>textarea</code></li></ul><h2 id="CSS-Style"><a href="#CSS-Style" class="headerlink" title="CSS Style"></a>CSS Style</h2><p><img src="/images/webstorm/lib/hugo-neo/neo08.webp" alt="hugo08"></p><p><em><strong>Settings -&gt; Editor -&gt; Code Style -&gt; Style Sheets -&gt; CSS -&gt; Tabs and Indent</strong></em></p><ul><li><code>Tab size</code>：<code>2</code></li><li><code>Indent</code>：<code>2</code></li><li><code>Continuation indent</code>：<code>2</code></li></ul><p><img src="/images/webstorm/lib/hugo-neo/neo09.webp" alt="hugo09"></p><p><em><strong>Settings -&gt; Editor -&gt; Code Style -&gt; Style Sheets -&gt; CSS -&gt; Arrangement</strong></em></p><ul><li><code>Custom order</code></li></ul><p><img src="/images/webstorm/lib/hugo-neo/neo11.webp" alt="hugo11"></p><p><em><strong>Settings -&gt; Editor -&gt; Inspections -&gt; CSS</strong></em></p><ul><li><code>Property is incompatible with selected browsers</code>：<code>On</code></li><li><code>Unused selector</code>：<code>On</code></li></ul><h2 id="Editor-Config"><a href="#Editor-Config" class="headerlink" title="Editor Config"></a>Editor Config</h2><p><strong>.editorconfig</strong></p><pre class="line-numbers highlight language-toml"><code class="language-toml">root = true# 針對所有檔案的預設設定[*]charset = utf-8indent_style = spaceindent_size = 2end_of_line = lfinsert_final_newline = truetrim_trailing_whitespace = true# 強制針對 HTML 和 Go Template 檔案使用 2 空格[*.{html,htm,tmpl}]indent_style = spaceindent_size = 2<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>強制 Go Template 語法 indent 為 <code>2</code></li></ul><h2 id="Actions-on-Save"><a href="#Actions-on-Save" class="headerlink" title="Actions on Save"></a>Actions on Save</h2><p><img src="/images/webstorm/lib/hugo-neo/neo05.webp" alt="hugo05"></p><p><em><strong>Settings -&gt; Tools -&gt; Actions on Save</strong></em></p><ul><li><code>Reformat code</code>：<code>Changed lines</code></li></ul><h2 id="Git"><a href="#Git" class="headerlink" title="Git"></a>Git</h2><p><strong>.gitignore</strong></p><pre class="line-numbers highlight language-git"><code class="language-git"><span class="token comment" spellcheck="true"># Hugo</span>publicresources.hugo_build.lock<span class="token comment" spellcheck="true"># Editor</span>.idea<span class="token comment" spellcheck="true"># macOS</span>.DS_Store<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>將 <code>.gitignore</code> 建立在 Hugo 專案的 <code>根目錄</code> 下。</p><ul><li><code>public</code> : final HTML&#x2F;CSS&#x2F;JavaScript for production</li><li><code>resources</code>：<code>hugo server</code> 時所建立的暫存目錄</li><li><code>.hugo_build.lock</code> : Hugo build 所建立的 lock 檔</li><li><code>.idea</code> : WebStorm 的暫存檔存放目錄</li><li><code>.DS_Store</code> : macOS 的資源檔</li></ul><h2 id="Shell-Script"><a href="#Shell-Script" class="headerlink" title="Shell Script"></a>Shell Script</h2><p><strong>run.sh</strong></p><pre class="line-numbers highlight language-bash"><code class="language-bash"><span class="token shebang important">#!/bin/bash</span>COMMAND<span class="token operator">=</span><span class="token variable">$1</span><span class="token keyword">case</span> <span class="token string">"<span class="token variable">$COMMAND</span>"</span> <span class="token keyword">in</span>  <span class="token string">"dev"</span><span class="token punctuation">)</span>    <span class="token keyword">echo</span> <span class="token string">"🚀 Starting Hugo Development Server..."</span>    hugo server --disableFastRender    <span class="token punctuation">;</span><span class="token punctuation">;</span>  <span class="token string">"build"</span><span class="token punctuation">)</span>    <span class="token keyword">echo</span> <span class="token string">"📦 Building Static Site..."</span>    hugo --cleanDestinationDir --minify    <span class="token keyword">echo</span> <span class="token string">"✅ Build complete in ./public"</span>    <span class="token punctuation">;</span><span class="token punctuation">;</span>  <span class="token string">"serve"</span><span class="token punctuation">)</span>    <span class="token keyword">echo</span> <span class="token string">"🌐 Serving ./public folder via Python..."</span>    <span class="token function">cd</span> public <span class="token operator">&amp;&amp;</span> python3 -m http.server    <span class="token punctuation">;</span><span class="token punctuation">;</span>  *<span class="token punctuation">)</span>    <span class="token keyword">echo</span> <span class="token string">"❌ Incorrect usage. Please enter one of the following commands:"</span>    <span class="token keyword">echo</span> <span class="token string">"   ./run.sh dev    - Start development preview"</span>    <span class="token keyword">echo</span> <span class="token string">"   ./run.sh build  - Build production version"</span>    <span class="token keyword">echo</span> <span class="token string">"   ./run.sh serve  - Preview the public folder"</span>    <span class="token keyword">exit</span> 1    <span class="token punctuation">;</span><span class="token punctuation">;</span>esac<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>使用 Shell Script 取代 NPM Script</li></ul><pre class="line-numbers highlight language-shell"><code class="language-shell">$ chmod +x ./run.sh<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>給予 <code>run.sh</code> 執行權限</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li>Smart Hugo 雖非 JetBrains 官方 Plugin，但其表現比 Go Template Plugin 好，是專為 Hugo 所設計，免費版已經非常好用</li><li>WebStorm 可以設定出比 Prettier 更細膩的 HTML 與 CSS 格式</li><li>WebStorm 對 CSS 的檢查不輸給 Stylelint，也可以對 property 加以排序</li><li>原本因為 VS Code 對於 Node.js 生態系的 Prettier 與 Stylelint 支援完整，WebStorm 在 Hugo 主題開發上日漸式微，但若使用 Vanilla CSS 搭配 Zero Dependency 與 No Node.js，則必須靠 WebStorm 內建功能彌補 Prettier 與 Stylelint 缺憾，VS Code 在這點無法與 WebStorm 抗衡</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;WebStorm 目前並沒有原生支援 Hugo，須另外安裝 &lt;code&gt;Smart Hugo&lt;/code&gt; plugin，且不再使用 Prettier 與 Stylelint，直接使用 WebStorm 內建功能，打造 Zero Dependency 與 No Node.js 開發環境。&lt;/p&gt;</summary>
    
    
    
    
    <category term="Hugo" scheme="https://hugoneo.ai/tags/Hugo/"/>
    
    <category term="WebStorm" scheme="https://hugoneo.ai/tags/WebStorm/"/>
    
  </entry>
  
  <entry>
    <title>使用 Excluded 隱藏檔案目錄與停止索引</title>
    <link href="https://hugoneo.ai/webstorm/project/exclude/"/>
    <id>https://hugoneo.ai/webstorm/project/exclude/</id>
    <published>2026-04-17T16:13:27.000Z</published>
    <updated>2026-04-26T15:13:10.558Z</updated>
    
    <content type="html"><![CDATA[<p>實務上很多目錄與檔案是由工具所建立與使用，我們並不會參與編輯，或者該檔案太多，會花費很多時間建立索引，可將這些檔案或目錄設定為 Excluded，將可隱藏並停止建立索引。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>WebStorm 2026.1</p><h2 id="Excluded"><a href="#Excluded" class="headerlink" title="Excluded"></a>Excluded</h2><p><img src="/images/webstorm/project/exclude/exclude06.webp" alt="exclude06"></p><ul><li>選擇檔案或目錄，右鍵 Mark Directory As -&gt; Excluded 設定為 Excluded</li></ul><h2 id="Hugo"><a href="#Hugo" class="headerlink" title="Hugo"></a>Hugo</h2><p><img src="/images/webstorm/project/exclude/exclude01.webp" alt="excluded01"></p><ul><li><code>.idea</code>：WebStorm 所用，不必顯示</li><li><code>.vscode</code>：VS Code 所有，不必顯示</li><li><code>node_modules</code>：NPM 套件所用，不必顯示</li><li><code>public</code>：<code>hugo build</code> 所產生的 HTML&#x2F;CSS&#x2F;JavaScript 放在此目錄，不必顯示</li><li><code>resources</code>：<code>hugo server</code> 將 asset 放在此目錄，不必顯示</li><li><code>hugo_build.lock</code>：<code>hugo build</code> 執行時所產生的 <code>lock</code> 檔，不必顯示</li><li><code>bun.lock</code>：<code>bun</code> 執行時所產生 <code>.lock</code> 檔，不必顯示</li></ul><h2 id="Hexo"><a href="#Hexo" class="headerlink" title="Hexo"></a>Hexo</h2><p><img src="/images/webstorm/project/exclude/exclude05.webp" alt="exclude05"></p><ul><li><code>.deploy_git</code>：<code>hexo deploy</code> 所使用目錄，不必索引與顯示</li><li><code>.idea</code>：WebStorm 所用，不必顯示</li><li><code>node_modules</code>：NPM 套件所用，不必顯示</li><li><code>public</code>：<code>hexo generate</code> 所產生的 HTML&#x2F;CSS&#x2F;JavaScript 放在此目錄，不必索引與顯示</li><li><code>sources</code>：Markdown 與圖片所用，不必索引與顯示</li></ul><h2 id="Appearance"><a href="#Appearance" class="headerlink" title="Appearance"></a>Appearance</h2><p><img src="/images/webstorm/project/exclude/exclude02.webp" alt="excluded02"></p><p><em><strong>Current Project -&gt; Appearance</strong></em></p><ul><li><code>Excluded Files：Off</code>：Project 不顯示 Excluded 的目錄與檔案</li></ul><h2 id="Directories"><a href="#Directories" class="headerlink" title="Directories"></a>Directories</h2><p><img src="/images/webstorm/project/exclude/exclude03.webp" alt="excluded03"></p><p><em><strong>Settings -&gt; Directories</strong></em></p><ul><li><code>Excluded</code>：將 <code>node_modules</code>、<code>public</code>、<code>resources</code> 加入</li><li><code>Exclude files</code>：<code>.vscode;*.lock</code></li></ul><p><img src="/images/webstorm/project/exclude/exclude04.webp" alt="exclude04"></p><ul><li>僅顯示能編輯的 <code>目錄</code> 與 <code>檔案</code>，讓整個專案看起來更清爽</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li>本文以 Hugo 專案為例，其他 Framework 專案可自行設定要隱藏的目錄與檔案</li><li>也以 Hexo 專案為例，將 Markdown 等目錄排除，可大幅縮短建立索引時間</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;實務上很多目錄與檔案是由工具所建立與使用，我們並不會參與編輯，或者該檔案太多，會花費很多時間建立索引，可將這些檔案或目錄設定為 Excluded，將可隱藏並停止建立索引。&lt;/p&gt;</summary>
    
    
    
    
    <category term="WebStorm" scheme="https://hugoneo.ai/tags/WebStorm/"/>
    
  </entry>
  
  <entry>
    <title>將 Theme 架構轉移成 Themeless 架構</title>
    <link href="https://hugoneo.ai/hugo/themeless/transfer/"/>
    <id>https://hugoneo.ai/hugo/themeless/transfer/</id>
    <published>2025-12-13T02:54:24.000Z</published>
    <updated>2026-02-08T08:26:49.569Z</updated>
    
    <content type="html"><![CDATA[<p>原本使用 Theme 開發，或想將別人開發的 Theme 改成 Themeless 架構，只需做少許的改變即可。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>Hugo 0.152.2</p><h2 id="Directories"><a href="#Directories" class="headerlink" title="Directories"></a>Directories</h2><p>將原本主題下的以下目錄直接轉移到專案根目錄。</p><ul><li><code>layouts</code>：最重要的核心，HTML Template</li><li><code>static</code>：外部 CSS、 外部 JS, 外部圖片等靜態檔案</li><li><code>assets</code>：使用 Hugo Pipes 處理 CSS、SCSS 或 JavaScript</li><li><code>archetypes</code>：Content Template</li><li><code>i18n</code>：多語言設定檔</li><li><code>data</code>：自訂資料檔</li></ul><h2 id="Configuration"><a href="#Configuration" class="headerlink" title="Configuration"></a>Configuration</h2><p><strong>hugo.toml</strong></p><pre class="line-numbers highlight language-toml"><code class="language-toml">baseURL = 'https://example.org/'languageCode = 'en-us'title = 'My Site'[params.css]files = [  "css/vars.css",  "css/reset.css",  "css/baseof.css",  "css/home.css",  "css/single.css",  "css/list.css",  "css/_partials/header.css",  "css/_partials/footer.css",  "css/page/about.css",]<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p><strong>Line 1</strong></p><pre class="line-numbers highlight language-toml"><code class="language-toml">baseURL = 'https://example.org/'languageCode = 'en-us'title = 'My Site'<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><ul><li>將原本 <code>theme</code> 那一行刪除，因為已經不需要設定主題了</li></ul><p><strong>Line 4</strong></p><pre class="line-numbers highlight language-toml"><code class="language-toml">[params.css]files = [  "css/vars.css",  "css/reset.css",  "css/baseof.css",  "css/home.css",  "css/single.css",  "css/list.css",  "css/_partials/header.css",  "css/_partials/footer.css",  "css/page/about.css",]<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>將原本主題內 <code>hugo.toml</code> 或 <code>theme.toml</code> 或 <code>config.toml</code> 的 <code>params</code> 部分搬到專案自己的 <code>hugo.toml</code></li></ul><h2 id="Remove-Theme"><a href="#Remove-Theme" class="headerlink" title="Remove Theme"></a>Remove Theme</h2><ul><li>檔案與設定都搬過來後，可直接刪除 <code>themes</code> 目錄</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li>若只是一個人開發，其實 Themeless 架構是最舒服的，不會有 layout override 問題，也不會有專案與主題都有 configuration 問題，適合需要 <code>長期維護</code>與 <code>高度客製化</code> 網站</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;原本使用 Theme 開發，或想將別人開發的 Theme 改成 Themeless 架構，只需做少許的改變即可。&lt;/p&gt;</summary>
    
    
    
    
    <category term="Hugo" scheme="https://hugoneo.ai/tags/Hugo/"/>
    
  </entry>
  
  <entry>
    <title>使用 IdeaVim 支援 Vim 模式</title>
    <link href="https://hugoneo.ai/webstorm/plugin/ideavim/"/>
    <id>https://hugoneo.ai/webstorm/plugin/ideavim/</id>
    <published>2025-08-24T09:49:41.000Z</published>
    <updated>2025-08-24T09:52:39.535Z</updated>
    
    <content type="html"><![CDATA[<p>Vim 優點在其高效的 <code>鍵盤</code> 控制，可完全不需 <code>滑鼠</code> 或 <code>觸控板</code> 介入。JetBrains 亦官方提供 IdeaVim Plugin，讓我們在 WebStorm 也能使用 Vim 模式。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>WebStorm 2025.2<br>IdeaVim 2.27.2</p><h2 id="IdeaVim"><a href="#IdeaVim" class="headerlink" title="IdeaVim"></a>IdeaVim</h2><p><img src="/images/webstorm/plugin/ideavim/vim01.webp" alt="vim01"></p><ul><li>安裝 IdeavVim Plugin，為 JetBrains 官方所提供</li></ul><h2 id="Hybrid-Line-Number"><a href="#Hybrid-Line-Number" class="headerlink" title="Hybrid Line Number"></a>Hybrid Line Number</h2><p><img src="/images/webstorm/plugin/ideavim/vim02.webp" alt="vim02"></p><p><em><strong>Settings -&gt; Editor -&gt; General -&gt; Appearance</strong></em></p><ul><li><code>Show line numbers</code>：<code>Hybrid</code></li></ul><p><img src="/images/webstorm/plugin/ideavim/vim03.webp" alt="vim03"></p><ul><li>同時顯示 <code>絕對</code> 與 <code>相對</code> 行數，方便 Vim 直接跳轉到指定行數</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li>WebStorm 無法同時顯示兩行 Line Number，但可透過 Hybrid 同時顯示 <code>絕對</code> 與 <code>相對</code> 行數</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;Vim 優點在其高效的 &lt;code&gt;鍵盤&lt;/code&gt; 控制，可完全不需 &lt;code&gt;滑鼠&lt;/code&gt; 或 &lt;code&gt;觸控板&lt;/code&gt; 介入。JetBrains 亦官方提供 IdeaVim Plugin，讓我們在 WebStorm 也能使用 Vim 模式。&lt;/p&gt;</summary>
    
    
    
    
    <category term="WebStorm" scheme="https://hugoneo.ai/tags/WebStorm/"/>
    
  </entry>
  
  <entry>
    <title>使用 WebStorm 開發 Hugo</title>
    <link href="https://hugoneo.ai/webstorm/lib/hugo/"/>
    <id>https://hugoneo.ai/webstorm/lib/hugo/</id>
    <published>2025-08-19T15:57:28.000Z</published>
    <updated>2025-08-19T16:00:42.941Z</updated>
    
    <content type="html"><![CDATA[<p>WebStorm 目前並沒有原生支援 Hugo，必須另外安裝 <code>Smart Hugo</code> plugin，但原生支援 Prettier 美化 HTML&#x2F;SCSS&#x2F;JavaScript，與 Stylelint 加強 CSS 檢查與排序。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>WebStorm 2025.2</p><h2 id="Node-js"><a href="#Node-js" class="headerlink" title="Node.js"></a>Node.js</h2><p><img src="/images/webstorm/lib/hugo/hugo05.webp" alt="hugo05"></p><p><em><strong>Settings -&gt; Languages &amp; Frameworks -&gt; Node.js</strong></em></p><ul><li>設定 Node.js 路徑</li></ul><blockquote><p>一定要設定，否則 Prettier 與 Stylelint 在 WebStorm 將無法執行</p></blockquote><h2 id="Smart-Hugo"><a href="#Smart-Hugo" class="headerlink" title="Smart Hugo"></a>Smart Hugo</h2><p><img src="/images/webstorm/lib/hugo/hugo01.webp" alt="webstorm01"></p><p><em><strong>Settings -&gt; Plugins</strong></em></p><ul><li>安裝 <code>Smart Hugo</code> plugin</li></ul><h2 id="CSS"><a href="#CSS" class="headerlink" title="CSS"></a>CSS</h2><p><img src="/images/webstorm/lib/hugo/hugo04.webp" alt="hugo04"></p><p><em><strong>Settings -&gt; Directories</strong></em></p><ul><li>將 CSS 的 <code>根目錄</code> 指定成 <code>Resource Root</code></li></ul><h2 id="Prittier"><a href="#Prittier" class="headerlink" title="Prittier"></a>Prittier</h2><pre class="line-numbers highlight language-shell"><code class="language-shell">$ npm install -D prettier $ npm install -D prettier-plugin-go-template$ npm install -D prettier-plugin-toml<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><ul><li><code>prettier</code>：美化 HTML&#x2F;SCSS&#x2F;JavaScript</li><li><code>prettier-plugin-go-template</code>：Prettier plugin：美化 Go template</li><li><code>prettier-plugin-toml</code>：Prettier plugin：美化 TOML</li></ul><p><strong>.prettierrc</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token punctuation">{</span>  <span class="token property">"bracketSameLine"</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>  <span class="token property">"htmlWhitespaceSensitivity"</span><span class="token operator">:</span> <span class="token string">"ignore"</span><span class="token punctuation">,</span>  <span class="token property">"semi"</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>  <span class="token property">"singleQuote"</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>  <span class="token property">"arrowParens"</span><span class="token operator">:</span> <span class="token string">"avoid"</span><span class="token punctuation">,</span>  <span class="token property">"plugins"</span><span class="token operator">:</span> <span class="token punctuation">[</span>    <span class="token string">"prettier-plugin-go-template"</span><span class="token punctuation">,</span>    <span class="token string">"prettier-plugin-toml"</span>  <span class="token punctuation">]</span><span class="token punctuation">,</span>  <span class="token property">"overrides"</span><span class="token operator">:</span> <span class="token punctuation">[</span>    <span class="token punctuation">{</span>      <span class="token property">"files"</span><span class="token operator">:</span> <span class="token punctuation">[</span>        <span class="token string">"*.html"</span>      <span class="token punctuation">]</span><span class="token punctuation">,</span>      <span class="token property">"options"</span><span class="token operator">:</span> <span class="token punctuation">{</span>        <span class="token property">"parser"</span><span class="token operator">:</span> <span class="token string">"go-template"</span>      <span class="token punctuation">}</span>    <span class="token punctuation">}</span>  <span class="token punctuation">]</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p><strong>Line 2</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token property">"bracketSameLine"</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span><span class="token property">"htmlWhitespaceSensitivity"</span><span class="token operator">:</span> <span class="token string">"ignore"</span><span class="token punctuation">,</span><span class="token property">"semi"</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span><span class="token property">"singleQuote"</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span><span class="token property">"arrowParens"</span><span class="token operator">:</span> <span class="token string">"avoid"</span><span class="token punctuation">,</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li><code>bracketSameLine: true</code>：HTML 的多 attribute 造成 tag 變成多行時，<code>&gt;</code> 不換行</li><li><code>htmlWhitespaceSensitivity: ignore</code>：HTML 忽略 white space 不換行</li><li><code>semi: false</code>：JavaScript 支援 ASI，結尾不加分號</li><li><code>singleQuote: true</code>：JavaScript 的 String 使用 <code>單引號</code>，但 HTML 與 SCSS 仍維持 <code>雙引號</code></li><li><code>arrowParens: avoid</code>：JavaScript 的 function 只有一個參數時不加 <code>()</code></li></ul><p><strong>Line 7</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token property">"plugins"</span><span class="token operator">:</span> <span class="token punctuation">[</span>  <span class="token string">"prettier-plugin-go-template"</span><span class="token punctuation">,</span>  <span class="token string">"prettier-plugin-toml"</span><span class="token punctuation">]</span><span class="token punctuation">,</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre><ul><li><code>plugins</code>：設定 Prettier plugin<ul><li><code>prettier-plugin-go-template</code>：美化 Go template</li><li><code>prettier-plugin-toml</code>：美化 TOML</li></ul></li></ul><p><strong>Line 11</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token property">"overrides"</span><span class="token operator">:</span> <span class="token punctuation">[</span>  <span class="token punctuation">{</span>    <span class="token property">"files"</span><span class="token operator">:</span> <span class="token punctuation">[</span>      <span class="token string">"*.html"</span>    <span class="token punctuation">]</span><span class="token punctuation">,</span>    <span class="token property">"options"</span><span class="token operator">:</span> <span class="token punctuation">{</span>      <span class="token property">"parser"</span><span class="token operator">:</span> <span class="token string">"go-template"</span>    <span class="token punctuation">}</span>  <span class="token punctuation">}</span><span class="token punctuation">]</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>將 <code>.html</code> 視為 Go template 處理</li></ul><p><strong>.prettierignore</strong></p><pre class="line-numbers highlight language-json"><code class="language-json">node_modulespublic*.min.css*.mim.js<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre><p>設定 Prettier 忽略的檔案類型與目錄：</p><ul><li><code>node_modules</code>：忽略 NPM 套件的目錄</li><li><code>public</code>：忽略 Hugo 編譯後檔案的目錄</li><li><code>*.min.css</code>：忽略已經壓縮的 CSS</li><li><code>*.min.js</code>：忽略已經壓縮的 JavaScript</li></ul><p><img src="/images/webstorm/lib/hugo/hugo02.webp" alt="hugo02"></p><p><em><strong>Settings -&gt; Languages &amp; Frameworks -&gt; JavaScript -&gt; Prettier</strong></em></p><ul><li><strong>Manual Prettier configuration</strong><ul><li><code>Prettier package</code>：指定 <code>node_modules</code> 下的 <code>prettier</code></li><li><code>Path to .prettierignore</code>：自動偵測 <code>.prettierignore</code></li><li><code>Run on Reformat Code action</code>：<code>On</code></li><li><code>Run for files</code>：<code>**/*.{html,css,js,toml}</code></li><li><code>Run on save</code>：<code>On</code></li><li><code>Prefer Prettier configuration to IDE code style</code>：<code>On</code></li></ul></li></ul><blockquote><p><code>Run for files</code> 的 <code>html</code>、<code>css</code>、<code>js</code> 與 <code>toml</code> 之間 <code>不要有空格</code></p></blockquote><p><strong>package.json</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token property">"scripts"</span><span class="token operator">:</span> <span class="token punctuation">{</span>  <span class="token property">"prettier"</span><span class="token operator">:</span> <span class="token string">"prettier --write '**/*.{html,css,js,toml}'"</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><ul><li><code>prettier</code>：一次處理專案內所有 HTML&#x2F;SCSS&#x2F;JavaScript&#x2F;TOML</li></ul><h2 id="Stylelint"><a href="#Stylelint" class="headerlink" title="Stylelint"></a>Stylelint</h2><pre class="line-numbers highlight language-shell"><code class="language-shell">$ npm install -D stylelint$ npm install -D stylelint-config-standard$ npm install -D stylelint-config-clean-order<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><ul><li><code>stylelint</code>：檢查 CSS</li><li><code>stylelint-config-standard</code>：Stylelint plugin：標準 CSS 規則</li><li><code>stylelint-config-clean-order</code>：Stylelint plugin：CSS 樣式排序規則</li></ul><p><strong>.stylelintrc</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token punctuation">{</span>  <span class="token property">"extends"</span><span class="token operator">:</span> <span class="token punctuation">[</span>    <span class="token string">"stylelint-config-standard"</span><span class="token punctuation">,</span>    <span class="token string">"stylelint-config-clean-order"</span>  <span class="token punctuation">]</span><span class="token punctuation">,</span>  <span class="token property">"rules"</span><span class="token operator">:</span> <span class="token punctuation">{</span>    <span class="token property">"max-nesting-depth"</span><span class="token operator">:</span> <span class="token punctuation">[</span>      <span class="token number">1</span><span class="token punctuation">,</span>      <span class="token punctuation">{</span><span class="token punctuation">}</span>    <span class="token punctuation">]</span><span class="token punctuation">,</span>    <span class="token property">"selector-class-pattern"</span><span class="token operator">:</span> <span class="token punctuation">[</span>      <span class="token string">"^[a-z]+(?:__[a-z0-9]+)?(?:--[a-z0-9]+)?$"</span><span class="token punctuation">,</span>      <span class="token punctuation">{</span>        <span class="token property">"message"</span><span class="token operator">:</span> <span class="token string">"Expected class selector to follow BEM"</span>      <span class="token punctuation">}</span>    <span class="token punctuation">]</span>  <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li><code>extends</code>：沿用規則<ul><li><code>stylelint-config-standard</code>：標準 CSS 規則</li><li><code>stylelint-config-clean-order</code>：樣式排序規則</li></ul></li><li><code>rules</code>：建立自訂規則<ul><li><code>max-nesting-depth</code>：巢狀最多只能一層</li><li><code>selector-class-pattern</code>：BEM 命名規則</li></ul></li></ul><p><strong>.stylelintignore</strong></p><pre class="line-numbers highlight language-json"><code class="language-json">node_modulespublicstatic<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><p>設定 Stylelint 忽略的檔案類型與目錄：</p><ul><li><code>node_modules</code>：忽略 NPM 套件的目錄</li><li><code>public</code>：忽略 Hugo 編譯後檔案的目錄</li><li><code>static</code>：忽略 <code>static</code> 目錄下 CSS</li></ul><p><img src="/images/webstorm/lib/hugo/hugo03.webp" alt="hugo03"></p><p><em><strong>Settings -&gt; Languages &amp; Frameworks -&gt; Style Sheets -&gt; Stylelint</strong></em></p><ul><li><code>Enabled</code>：啟用 Stylelint</li><li><code>Stylelint package</code>：指定 <code>node_modules</code> 下的 <code>stylelint</code></li><li><code>Configuration file</code>：自動偵測 <code>.stylelintrc</code></li><li><code>Run for files</code>：<code>**/*.{css}</code></li><li><code>Run stylelint --fix on save</code>：<code>on</code></li></ul><p><strong>package.json</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token property">"scripts"</span><span class="token operator">:</span> <span class="token punctuation">{</span>  <span class="token property">"stylelint"</span><span class="token operator">:</span> <span class="token string">"npx stylelint '**/*.{css,}' --fix"</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><ul><li><code>stylelint</code>：一次處理專案內所有 CSS</li></ul><h2 id="Git"><a href="#Git" class="headerlink" title="Git"></a>Git</h2><p><strong>.gitignore</strong></p><pre class="line-numbers highlight language-git"><code class="language-git"><span class="token comment" spellcheck="true"># Hugo</span>publicresources.hugo_build.lock<span class="token comment" spellcheck="true"># Editor</span>.idea.vscode/*!.vscode/settings.json!.vscode/extensions.json<span class="token comment" spellcheck="true"># NPM</span>node_modules<span class="token comment" spellcheck="true"># macOS</span>.DS_Store<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>將 <code>.gitignore</code> 建立在 Hugo 專案的 <code>根目錄</code> 下。</p><ul><li><code>public</code> : final HTML&#x2F;CSS&#x2F;JavaScript for production</li><li><code>resources</code>：<code>hugo server</code> 時所建立的暫存目錄</li><li><code>.hugo_build.lock</code> : Hugo build 所建立的 lock 檔</li><li><code>.idea</code> : WebStorm 的暫存檔存放目錄</li><li><code>.vscode</code>：VS Code 的暫存檔存放目錄</li><li><code>!.vscode/settings.json</code>：VS Code workspace 的 user setting 要進 Git</li><li><code>!.vscode/extensions.json</code>：VS Code workspace 的推薦 extension 要進 Git</li><li><code>node_modules</code> : NPM 套件存放目錄</li><li><code>.DS_Store</code> : macOS 的資源檔</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li>Smart Hugo 雖非 JetBrains 官方 Plugin，但其表現比 Go Template Plugin 好，是專為 Hugo 所設計</li><li>Prettier 本身並不支援 Go template 與 TOML，必須另外安裝 <code>prettier-plugin-go-template</code> 與 <code>prettier-plugin-toml</code></li><li>WebStorm 原生已經支援 Prettier，只需加以設定即可</li><li>Stylelint 可對 CSS 與 BEM 做檢查，並對屬性加以排序</li><li>WebStorm 原生已經支援 Stylelint，只需加以設定即可</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;WebStorm 目前並沒有原生支援 Hugo，必須另外安裝 &lt;code&gt;Smart Hugo&lt;/code&gt; plugin，但原生支援 Prettier 美化 HTML&amp;#x2F;SCSS&amp;#x2F;JavaScript，與 Stylelint 加強 CSS 檢查與排序。&lt;/p&gt;</summary>
    
    
    
    
    <category term="Hugo" scheme="https://hugoneo.ai/tags/Hugo/"/>
    
    <category term="WebStorm" scheme="https://hugoneo.ai/tags/WebStorm/"/>
    
  </entry>
  
  <entry>
    <title>顯示 Hugo 編譯過的網站</title>
    <link href="https://hugoneo.ai/hugo/cli/serve/"/>
    <id>https://hugoneo.ai/hugo/cli/serve/</id>
    <published>2025-08-19T11:19:31.000Z</published>
    <updated>2025-08-19T11:19:54.368Z</updated>
    
    <content type="html"><![CDATA[<p>Hugo 內建的 Web Server 只能用在 <code>開發階段</code>，無法用在編譯後的 HTML&#x2F;JavaScript&#x2F;CSS，需要透過其他 Web Server。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>Hugo 0.148.2</p><h2 id="NPM-Script"><a href="#NPM-Script" class="headerlink" title="NPM Script"></a>NPM Script</h2><p><strong>package.json</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token punctuation">{</span>  <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"hugo-theme"</span><span class="token punctuation">,</span>  <span class="token property">"version"</span><span class="token operator">:</span> <span class="token string">"1.0.0"</span><span class="token punctuation">,</span>  <span class="token property">"scripts"</span><span class="token operator">:</span> <span class="token punctuation">{</span>    <span class="token property">"dev"</span><span class="token operator">:</span> <span class="token string">"hugo server --disableFastRender"</span><span class="token punctuation">,</span>    <span class="token property">"build"</span><span class="token operator">:</span> <span class="token string">"hugo --cleanDestinationDir --minify"</span><span class="token punctuation">,</span>    <span class="token property">"prettier"</span><span class="token operator">:</span> <span class="token string">"prettier --write '**/*.{html,css,js,toml}'"</span><span class="token punctuation">,</span>    <span class="token property">"stylelint"</span><span class="token operator">:</span> <span class="token string">"npx stylelint '**/*.{css}' --fix"</span><span class="token punctuation">,</span>    <span class="token property">"serve"</span><span class="token operator">:</span> <span class="token string">"npx serve public"</span>  <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>第 9 行</p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token property">"serve"</span><span class="token operator">:</span> <span class="token string">"npx serve public"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li><code>npx</code>：一次性執行 <code>serve</code>，不必手動安裝到 global</li><li><code>serve public</code>：使用 <code>serve</code> web server 執行 <code>public</code> 目錄下的 HTML&#x2F;CSS&#x2F;JavaScript</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li><code>npx</code> 讓我們不用事先安裝一些套件到 global，要用時會自動下載</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;Hugo 內建的 Web Server 只能用在 &lt;code&gt;開發階段&lt;/code&gt;，無法用在編譯後的 HTML&amp;#x2F;JavaScript&amp;#x2F;CSS，需要透過其他 Web Server。&lt;/p&gt;</summary>
    
    
    
    
    <category term="Hugo" scheme="https://hugoneo.ai/tags/Hugo/"/>
    
  </entry>
  
  <entry>
    <title>disableFastRender 全站渲染</title>
    <link href="https://hugoneo.ai/hugo/cli/disablefastrender/"/>
    <id>https://hugoneo.ai/hugo/cli/disablefastrender/</id>
    <published>2025-08-19T11:16:26.000Z</published>
    <updated>2025-08-19T11:17:13.843Z</updated>
    
    <content type="html"><![CDATA[<p><code>hugo server</code> 預設會以 FastRender  ，只渲染 <code>有修改</code> 部分，但這只適合 Content Creator，並不適用於 Theme Creator。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>Hugo 0.148.2</p><h2 id="Disable-Fast-Render"><a href="#Disable-Fast-Render" class="headerlink" title="Disable Fast Render"></a>Disable Fast Render</h2><pre class="line-numbers highlight language-shell"><code class="language-shell">$ hugo server --disableFastRender<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li><code>disableFastRender</code>：<code>hugo server</code> 將不只渲染有修改部分，任何修改都將引起全站渲染</li></ul><h2 id="Hugo-for-Development"><a href="#Hugo-for-Development" class="headerlink" title="Hugo for Development"></a>Hugo for Development</h2><pre class="line-numbers highlight language-shell"><code class="language-shell">$ hugo server --disableFastRender --renderToMemory<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>開發模式建議參數：</p><ul><li><code>disableFastRender</code>：有修改將整個網站重新渲染，避免開發階段有些變更無法立即顯示</li><li><code>renderToMemory</code>：將 HTML&#x2F;CSS&#x2F;JavaScript 渲染到記憶體</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li>若是使用其他人所建立的 Theme，自己只是建立 Markdown 的 Content Creator，則適合使用 Fast Render</li><li>若是自己建立 HTML&#x2F;CSS&#x2F;JavaScript 的 Theme Creator，則不適合使用 Fast Render，因為會發現有些改變並不會立即渲染</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;code&gt;hugo server&lt;/code&gt; 預設會以 FastRender  ，只渲染 &lt;code&gt;有修改&lt;/code&gt; 部分，但這只適合 Content Creator，並不適用於 Theme Creator。&lt;/p&gt;</summary>
    
    
    
    
    <category term="Hugo" scheme="https://hugoneo.ai/tags/Hugo/"/>
    
  </entry>
  
  <entry>
    <title>cleanDestinationDir 編譯前先刪除 public 目錄</title>
    <link href="https://hugoneo.ai/hugo/cli/cleandestinationdir/"/>
    <id>https://hugoneo.ai/hugo/cli/cleandestinationdir/</id>
    <published>2025-08-19T10:58:07.000Z</published>
    <updated>2025-08-19T11:07:49.177Z</updated>
    
    <content type="html"><![CDATA[<p>Hugo 編譯時，預設不會先刪除 <code>public</code> 目錄，這導致若你原本刪除了一些 Markdown 或重新命名，將會繼續留在 <code>public</code> 目錄下，可加上 <code>cleanDestinationDir</code> 參數讓 Hugo 在編譯前先刪除 <code>public</code> 目錄。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>Hugo 0.148.2</p><h2 id="Delete-Public-Folder"><a href="#Delete-Public-Folder" class="headerlink" title="Delete Public Folder"></a>Delete Public Folder</h2><pre class="line-numbers highlight language-shell"><code class="language-shell">$ rm -r public && hugo<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>手動刪除 <code>public</code> 目錄並令 Hugo 編譯</li></ul><h2 id="Clean-Destination-Dir"><a href="#Clean-Destination-Dir" class="headerlink" title="Clean Destination Dir"></a>Clean Destination Dir</h2><pre class="line-numbers highlight language-shell"><code class="language-shell">$ hugo --cleanDestinationDir<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li><code>cleanDestinationDir</code>：Hugo 編譯前先刪除 <code>public</code> 目錄</li></ul><h2 id="Hugo-for-Production"><a href="#Hugo-for-Production" class="headerlink" title="Hugo for Production"></a>Hugo for Production</h2><pre class="line-numbers highlight language-shell"><code class="language-shell">$ hugo --cleanDestinationDir --minify<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>生產模式建議參數：</p><ul><li><code>cleanDestinationDir</code>：先刪除 <code>public</code> 目錄</li><li><code>minify</code>：壓縮 HTML</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li><code>cleanDestinationDir</code> 與 <code>minify</code> 是生產模式下常用的參數組合</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;Hugo 編譯時，預設不會先刪除 &lt;code&gt;public&lt;/code&gt; 目錄，這導致若你原本刪除了一些 Markdown 或重新命名，將會繼續留在 &lt;code&gt;public&lt;/code&gt; 目錄下，可加上 &lt;code&gt;cleanDestinationDir&lt;/code&gt; 參數讓 Hugo 在編譯前先刪除 &lt;code&gt;public&lt;/code&gt; 目錄。&lt;/p&gt;</summary>
    
    
    
    
    <category term="Hugo" scheme="https://hugoneo.ai/tags/Hugo/"/>
    
  </entry>
  
  <entry>
    <title>renderToMemory 渲染到記憶體</title>
    <link href="https://hugoneo.ai/hugo/cli/rendertomemory/"/>
    <id>https://hugoneo.ai/hugo/cli/rendertomemory/</id>
    <published>2025-08-19T02:36:00.000Z</published>
    <updated>2025-08-19T11:03:50.488Z</updated>
    
    <content type="html"><![CDATA[<p><code>hugo server</code> 預設會將 HTML&#x2F;CSS&#x2F;JavaScript 渲染到 <code>public</code> 目錄下，可加上 <code>renderToMemory</code> 渲染到記憶體，將可加快渲染速度。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>Hugo 0.148.2</p><h2 id="Render-To-Memory"><a href="#Render-To-Memory" class="headerlink" title="Render To Memory"></a>Render To Memory</h2><pre class="line-numbers highlight language-shell"><code class="language-shell">$ hugo server --renderToMemory<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li><code>renderToMemory</code>：<code>hugo server</code> 將 HTML&#x2F;CSS&#x2F;JavaScript 渲染到記憶體，而非 <code>public</code> 目錄</li></ul><h2 id="Hugo-for-Development"><a href="#Hugo-for-Development" class="headerlink" title="Hugo for Development"></a>Hugo for Development</h2><pre class="line-numbers highlight language-shell"><code class="language-shell">$ hugo server --disableFastRender --renderToMemory<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>開發模式建議參數：</p><ul><li><code>disableFastRender</code>：有修改將整個網站重新渲染，避免開發階段有些變更無法立即顯示</li><li><code>renderToMemory</code>：將 HTML&#x2F;CSS&#x2F;JavaScript 渲染到記憶體</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li><code>renderToMemory</code> 勢必消耗更多記憶體，若本身記憶體不大，則不建議使用此參數</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;code&gt;hugo server&lt;/code&gt; 預設會將 HTML&amp;#x2F;CSS&amp;#x2F;JavaScript 渲染到 &lt;code&gt;public&lt;/code&gt; 目錄下，可加上 &lt;code&gt;renderToMemory&lt;/code&gt; 渲染到記憶體，將可加快渲染速度。&lt;/p&gt;</summary>
    
    
    
    
    <category term="Hugo" scheme="https://hugoneo.ai/tags/Hugo/"/>
    
  </entry>
  
  <entry>
    <title>Hugo 常用的 NPM Script</title>
    <link href="https://hugoneo.ai/hugo/cli/npm/"/>
    <id>https://hugoneo.ai/hugo/cli/npm/</id>
    <published>2025-08-19T02:17:02.000Z</published>
    <updated>2025-08-19T02:17:59.002Z</updated>
    
    <content type="html"><![CDATA[<p>Hugo 有一些參數特別適合 <code>開發</code> 與 <code>編譯</code> 時使用，可將最 <code>常用</code> 參數直接寫在 NPM Script。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>Hugo 0.148.2</p><h2 id="NPM-Script"><a href="#NPM-Script" class="headerlink" title="NPM Script"></a>NPM Script</h2><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token punctuation">{</span>  <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"hugo-theme"</span><span class="token punctuation">,</span>  <span class="token property">"version"</span><span class="token operator">:</span> <span class="token string">"1.0.0"</span><span class="token punctuation">,</span>  <span class="token property">"license"</span><span class="token operator">:</span> <span class="token string">"MIT"</span><span class="token punctuation">,</span>  <span class="token property">"scripts"</span><span class="token operator">:</span> <span class="token punctuation">{</span>    <span class="token property">"dev"</span><span class="token operator">:</span> <span class="token string">"hugo server --disableFastRender --renderToMemory"</span><span class="token punctuation">,</span>    <span class="token property">"build"</span><span class="token operator">:</span> <span class="token string">"hugo --cleanDestinationDir --minify"</span><span class="token punctuation">,</span>    <span class="token property">"serve"</span><span class="token operator">:</span> <span class="token string">"npx serve public"</span>  <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p><strong>Line 6</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token property">"dev"</span><span class="token operator">:</span> <span class="token string">"hugo server --disableFastRender --renderToMemory"</span><span class="token punctuation">,</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>開發用 script：</p><ul><li><code>disableFastRender</code>：在 <code>開發</code> 時，修改 Partial、Layout、Front Matter 都會重新 render</li><li><code>renderToMemory</code>：在 <code>開發</code> 時，HTML&#x2F;CSS&#x2F;JavaScript 將渲染到 <code>記憶體</code>，而非 <code>public</code> 目錄下加速</li></ul><p><strong>Line 7</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token property">"build"</span><span class="token operator">:</span> <span class="token string">"hugo --cleanDestinationDir --minify"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>編譯用 script：</p><ul><li><code>cleanDestinationDir</code>：在 <code>編譯</code> 前先刪除 <code>public</code> 目錄</li><li><code>minify</code>：在 <code>編譯</code> 時將 HTML&#x2F;CSS&#x2F;JavaScript 加以壓縮</li></ul><p><strong>Line 8</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token property">"serve"</span><span class="token operator">:</span> <span class="token string">"npx serve public"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>顯示編譯過的網站：</p><ul><li><code>npx</code>：類似 <code>npx</code> 一次性執行 <code>serve</code>，不必手動安裝到 global</li><li><code>serve public</code>：使用 <code>serve</code> web server 執行 <code>public</code> 目錄下的 HTML&#x2F;CSS&#x2F;JavaScript</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li>NPM Script 適合參數不多，若參數過多就必須使用 Bash Script</li><li>雖然本文僅列少數參數，但基本上 <code>開發</code> 與 <code>編譯</code> 也都夠用</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;Hugo 有一些參數特別適合 &lt;code&gt;開發&lt;/code&gt; 與 &lt;code&gt;編譯&lt;/code&gt; 時使用，可將最 &lt;code&gt;常用&lt;/code&gt; 參數直接寫在 NPM Script。&lt;/p&gt;</summary>
    
    
    
    
    <category term="Hugo" scheme="https://hugoneo.ai/tags/Hugo/"/>
    
  </entry>
  
  <entry>
    <title>限制 SCSS 巢狀結構只能一層</title>
    <link href="https://hugoneo.ai/stylelint/sass/nesting-depth/"/>
    <id>https://hugoneo.ai/stylelint/sass/nesting-depth/</id>
    <published>2025-08-19T01:59:12.000Z</published>
    <updated>2025-08-19T01:59:53.011Z</updated>
    
    <content type="html"><![CDATA[<p>雖然 SCSS 的巢狀結構沒有限制層數，但好的 BEM 配合 SCSS 最好只要一層就好，可以透過 Stylelint 加以限制。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>Stylelint 16.23.1</p><h2 id="Stylelint"><a href="#Stylelint" class="headerlink" title="Stylelint"></a>Stylelint</h2><p><strong>.stylelintrc</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token punctuation">{</span>  <span class="token property">"extends"</span><span class="token operator">:</span> <span class="token string">"stylelint-config-standard-scss"</span><span class="token punctuation">,</span>  <span class="token property">"plugins"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">"stylelint-scss"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>  <span class="token property">"rules"</span><span class="token operator">:</span> <span class="token punctuation">{</span>    <span class="token property">"max-nesting-depth"</span><span class="token operator">:</span> <span class="token punctuation">[</span>      <span class="token number">1</span><span class="token punctuation">,</span>      <span class="token punctuation">{</span><span class="token punctuation">}</span>    <span class="token punctuation">]</span>  <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>Stylelint 設定檔</li></ul><p><strong>Line 4</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token property">"rules"</span><span class="token operator">:</span> <span class="token punctuation">{</span>  <span class="token property">"max-nesting-depth"</span><span class="token operator">:</span> <span class="token punctuation">[</span>    <span class="token number">1</span><span class="token punctuation">,</span>    <span class="token punctuation">{</span><span class="token punctuation">}</span>  <span class="token punctuation">]</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li><code>max-nesting-depth</code>：</li><li><code>1</code>：設定巢狀結構最多只能 1 層</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li>SCSS 巢狀結構太多層並不好維護，可透過 Stylelint 加以限制</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;雖然 SCSS 的巢狀結構沒有限制層數，但好的 BEM 配合 SCSS 最好只要一層就好，可以透過 Stylelint 加以限制。&lt;/p&gt;</summary>
    
    
    
    
    <category term="Stylelint" scheme="https://hugoneo.ai/tags/Stylelint/"/>
    
    <category term="Sass" scheme="https://hugoneo.ai/tags/Sass/"/>
    
  </entry>
  
  <entry>
    <title>限制 CSS 巢狀結構只能一層</title>
    <link href="https://hugoneo.ai/stylelint/css/nesting-depth/"/>
    <id>https://hugoneo.ai/stylelint/css/nesting-depth/</id>
    <published>2025-08-19T01:57:11.000Z</published>
    <updated>2025-08-19T01:57:51.371Z</updated>
    
    <content type="html"><![CDATA[<p>雖然 CSS 的巢狀結構沒有限制層數，但好的 BEM 配合 CSS 最好只要一層就好，可以透過 Stylelint 加以限制。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>Stylelint 16.23.1</p><h2 id="Stylelint"><a href="#Stylelint" class="headerlink" title="Stylelint"></a>Stylelint</h2><p><strong>.stylelintrc</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token punctuation">{</span>  <span class="token property">"extends"</span><span class="token operator">:</span> <span class="token string">"stylelint-config-standard"</span><span class="token punctuation">,</span>  <span class="token property">"rules"</span><span class="token operator">:</span> <span class="token punctuation">{</span>    <span class="token property">"max-nesting-depth"</span><span class="token operator">:</span> <span class="token punctuation">[</span>      <span class="token number">1</span><span class="token punctuation">,</span>      <span class="token punctuation">{</span><span class="token punctuation">}</span>    <span class="token punctuation">]</span>  <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>Stylelint 設定檔</li></ul><p><strong>Line 4</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token property">"rules"</span><span class="token operator">:</span> <span class="token punctuation">{</span>  <span class="token property">"max-nesting-depth"</span><span class="token operator">:</span> <span class="token punctuation">[</span>    <span class="token number">1</span><span class="token punctuation">,</span>    <span class="token punctuation">{</span><span class="token punctuation">}</span>  <span class="token punctuation">]</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li><code>max-nesting-depth</code>：</li><li><code>1</code>：設定巢狀結構最多只能 1 層</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li>CSS 巢狀結構太多層並不好維護，可透過 Stylelint 加以限制</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;雖然 CSS 的巢狀結構沒有限制層數，但好的 BEM 配合 CSS 最好只要一層就好，可以透過 Stylelint 加以限制。&lt;/p&gt;</summary>
    
    
    
    
    <category term="CSS" scheme="https://hugoneo.ai/tags/CSS/"/>
    
    <category term="Stylelint" scheme="https://hugoneo.ai/tags/Stylelint/"/>
    
  </entry>
  
  <entry>
    <title>統一 SCSS 樣式排序</title>
    <link href="https://hugoneo.ai/stylelint/sass/clean-order/"/>
    <id>https://hugoneo.ai/stylelint/sass/clean-order/</id>
    <published>2025-08-19T01:54:39.000Z</published>
    <updated>2026-02-08T08:26:49.569Z</updated>
    
    <content type="html"><![CDATA[<p>若由多人共同開發 SCSS，不同的樣式排序將造成困擾，可透過 Stylelint 將樣式統一排序。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>Stylelint 16.23.1<br>Stylelint-config-clean-order 7.0.0</p><h2 id="Stylelint"><a href="#Stylelint" class="headerlink" title="Stylelint"></a>Stylelint</h2><pre class="line-numbers highlight language-shell"><code class="language-shell">$ npm install -D stylelint $ npm install -D stylelint-config-clean-order<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><ul><li><code>stylelint</code>：檢查 SCSS</li><li><code>stylelint-config-clean-order</code>：Stylelint plugin：SCSS 樣式排序規則</li></ul><p><strong>.stylelintrc</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token punctuation">{</span>  <span class="token property">"extends"</span><span class="token operator">:</span> <span class="token punctuation">[</span>    <span class="token string">"stylelint-config-standard-scss"</span><span class="token punctuation">,</span>    <span class="token string">"stylelint-config-clean-order"</span>  <span class="token punctuation">]</span><span class="token punctuation">,</span>  <span class="token property">"plugins"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">"stylelint-scss"</span><span class="token punctuation">]</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>Stylelint 設定檔</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li><code>stylelint-config-clean-order</code> 已經幫我們設定好排序的規則，因此不用再設定任何 rule</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;若由多人共同開發 SCSS，不同的樣式排序將造成困擾，可透過 Stylelint 將樣式統一排序。&lt;/p&gt;</summary>
    
    
    
    
    <category term="Stylelint" scheme="https://hugoneo.ai/tags/Stylelint/"/>
    
    <category term="Sass" scheme="https://hugoneo.ai/tags/Sass/"/>
    
  </entry>
  
  <entry>
    <title>統一 CSS 樣式排序</title>
    <link href="https://hugoneo.ai/stylelint/css/clean-order/"/>
    <id>https://hugoneo.ai/stylelint/css/clean-order/</id>
    <published>2025-08-19T01:51:31.000Z</published>
    <updated>2025-08-19T01:52:25.704Z</updated>
    
    <content type="html"><![CDATA[<p>若由多人共同開發 CSS，不同的樣式排序將造成困擾，可透過 Stylelint 將樣式統一排序。</p><a id="more"></a><h2 id="Version"><a href="#Version" class="headerlink" title="Version"></a>Version</h2><p>Stylelint 16.23.1<br>Stylelint-config-clean-order 7.0.0</p><h2 id="Stylelint"><a href="#Stylelint" class="headerlink" title="Stylelint"></a>Stylelint</h2><pre class="line-numbers highlight language-shell"><code class="language-shell">$ npm install -D stylelint $ npm install -D stylelint-config-clean-order<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><ul><li><code>stylelint</code>：檢查 CSS</li><li><code>stylelint-config-clean-order</code>：Stylelint plugin：CSS 樣式排序規則</li></ul><p><strong>.stylelintrc</strong></p><pre class="line-numbers highlight language-json"><code class="language-json"><span class="token punctuation">{</span>  <span class="token property">"extends"</span><span class="token operator">:</span> <span class="token punctuation">[</span>    <span class="token string">"stylelint-config-standard"</span><span class="token punctuation">,</span>    <span class="token string">"stylelint-config-clean-order"</span>  <span class="token punctuation">]</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>Stylelint 設定檔</li></ul><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><ul><li><code>stylelint-config-clean-order</code> 已經幫我們設定好排序的規則，因此不用再設定任何 rule</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;若由多人共同開發 CSS，不同的樣式排序將造成困擾，可透過 Stylelint 將樣式統一排序。&lt;/p&gt;</summary>
    
    
    
    
    <category term="CSS" scheme="https://hugoneo.ai/tags/CSS/"/>
    
    <category term="Stylelint" scheme="https://hugoneo.ai/tags/Stylelint/"/>
    
  </entry>
  
</feed>
