<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Builds on Vedant Andhale</title>
    <link>https://www.vedant.me/tags/builds/</link>
    <description>Recent content in Builds on Vedant Andhale</description>
    <image>
      <url>https://www.vedant.me/</url>
      <link>https://www.vedant.me/</link>
    </image>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 10 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.vedant.me/tags/builds/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Keep a static-site build easy to explain</title>
      <link>https://www.vedant.me/notebook/a-build-that-finishes-in-seconds/</link>
      <pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://www.vedant.me/notebook/a-build-that-finishes-in-seconds/</guid>
      <description>The build contract behind this Hugo portfolio: pinned inputs, explicit environments and generated HTML.</description>
      <content:encoded><![CDATA[<p>This portfolio has a fairly small job: turn Markdown, templates and assets into pages that a browser can read. Keeping that build easy to understand matters more to me than introducing a larger application framework.</p>
<p>The site uses Hugo Extended, a pinned PaperModX theme, custom CSS and a small amount of JavaScript. Vercel serves the generated output. The CMS edits the same Markdown files in GitHub, so a content change goes through the normal deployment path.</p>
<h2 id="make-the-environment-explicit">Make the environment explicit</h2>
<p>The production command is:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">hugo --gc --minify --environment production
</span></span></code></pre></td></tr></table>
</div>
</div><p>A preview needs a different environment because its search-indexing policy is different:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">hugo --gc --minify --environment preview --destination public-preview
</span></span></code></pre></td></tr></table>
</div>
</div><p>In this site&rsquo;s deployment configuration, Vercel&rsquo;s environment is passed through to Hugo. Production pages can be indexed; preview pages emit <code>noindex</code>. That is a site-template decision, not something the word “preview” magically guarantees in Hugo.</p>
<h2 id="know-what-a-timing-includes">Know what a timing includes</h2>
<p>The time Hugo reports for rendering is only one part of a deployment. Downloading the build tool, fetching the theme, preparing assets and uploading output can take longer than generating the HTML.</p>
<p>If a deployment becomes slow, I would measure those stages separately before changing the renderer. A cached build-tool download solves a different problem from an expensive template loop.</p>
<p>Pinning the Hugo version and theme revision also makes a surprising change easier to investigate. Otherwise, a content-only commit can pick up a new dependency and quietly become a software update.</p>
<h2 id="inspect-the-output">Inspect the output</h2>
<p>A successful process exit means the build completed. It does not tell you that a résumé link exists, a draft stayed unpublished or the canonical URL points to the right host.</p>
<p>For this site, those are useful checks on the generated files. They exercise the result someone will actually receive, and they keep the deployment contract small enough to understand when something breaks.</p>
<p>Reference: <a href="https://gohugo.io/commands/hugo/">Hugo command options</a>.</p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
