# ssg-output.ts

**[Source](https://github.com/ubugeeei-prod/ox-content/blob/main/npm/vite-plugin-ox-content/src/ssg-output.ts)**

> 5 documented symbols. Read the signatures first, then expand each item for parameters, return types, and examples.

<div class="ox-api-stats" aria-label="API reference summary">
<span class="ox-api-stat">
  <strong>5</strong>
  <span>symbols</span>
</span>
<span class="ox-api-stat">
  <strong>1</strong>
  <span>functions</span>
</span>
<span class="ox-api-stat">
  <strong>3</strong>
  <span>interfaces</span>
</span>
<span class="ox-api-stat">
  <strong>1</strong>
  <span>modules</span>
</span>
<span class="ox-api-stat">
  <strong>1</strong>
  <span>parameters</span>
</span>
<span class="ox-api-stat">
  <strong>21</strong>
  <span>members</span>
</span>
<span class="ox-api-stat">
  <strong>1</strong>
  <span>returns</span>
</span>
</div>

## Reference

<div class="ox-api-controls" data-ox-api-target=".ox-api-entry" role="toolbar" aria-label="Reference display controls">
<button type="button" class="ox-api-controls__button" data-ox-api-toggle="expand">Open all</button>
<button type="button" class="ox-api-controls__button" data-ox-api-toggle="collapse">Close all</button>
</div>

<details id="planssgoutputs" class="ox-api-entry">
  <summary><span class="ox-api-entry__kind">fn</span><span class="ox-api-entry__summary-main"><code class="ox-api-entry__signature ox-api-entry__signature--highlighted language-typescript">planSsgOutputs(input: PlanSsgOutputsInput): SsgOutputPlan</code><span class="ox-api-entry__description">Plan resource, companion, feed, and sitemap outputs without rendering pages. ss…</span><span class="ox-api-entry__meta"><span class="ox-api-badge">1 param</span><span class="ox-api-badge">returns SsgOutputPlan</span></span></span></summary>
  <div class="ox-api-entry__body">
<div class="ox-api-entry__prose">
<p>Plan resource, companion, feed, and sitemap outputs without rendering pages.</p>
<p><code>ssg.enabled</code> is ignored. Use <code>ssg: { enabled: false, markdownSource, lastUpdated, siteUrl }</code> so those fields still resolve. <code>lastUpdated</code> on a page wins over git.</p>
</div>
<div class="ox-api-entry__section ox-api-entry__section--signature">
<h4>Signature</h4>
<pre><code class="language-typescript">export function planSsgOutputs(input: PlanSsgOutputsInput): SsgOutputPlan</code></pre>
</div>
<p class="ox-api-entry__source"><a class="ox-api-entry__source-link" href="https://github.com/ubugeeei-prod/ox-content/blob/main/npm/vite-plugin-ox-content/src/ssg-output.ts#L135-L195" target="_blank" rel="noopener noreferrer">View source<span class="ox-api-entry__source-icon" aria-hidden="true"></span></a></p>
<div class="ox-api-entry__section ox-api-entry__section--params">
<h4>Parameters</h4>
<ul class="ox-api-entry__params">
<li class="ox-api-entry__param">
  <div class="ox-api-entry__param-heading">
    <code class="ox-api-entry__param-name">input</code>
    <code class="ox-api-entry__param-type"><a href="#planssgoutputsinput">PlanSsgOutputsInput</a></code>
  </div>
</li>
</ul>
</div>
<div class="ox-api-entry__section ox-api-entry__section--returns">
<h4>Returns</h4>
<div class="ox-api-entry__return">
  <code class="ox-api-entry__return-type"><a href="#ssgoutputplan">SsgOutputPlan</a></code>
</div>
</div>
  </div>
</details>

<details id="planssgoutputsinput" class="ox-api-entry">
  <summary><span class="ox-api-entry__kind">interface</span><span class="ox-api-entry__summary-main"><code class="ox-api-entry__signature ox-api-entry__signature--highlighted language-typescript">PlanSsgOutputsInput</code><span class="ox-api-entry__description">Inputs for planning composable SSG outputs from host-rendered pages.</span><span class="ox-api-entry__meta"><span class="ox-api-badge">9 members</span></span></span></summary>
  <div class="ox-api-entry__body">
<div class="ox-api-entry__prose">
<p>Inputs for planning composable SSG outputs from host-rendered pages.</p>
</div>
<div class="ox-api-entry__section ox-api-entry__section--signature">
<h4>Signature</h4>
<pre><code class="language-typescript">export interface PlanSsgOutputsInput</code></pre>
</div>
<p class="ox-api-entry__source"><a class="ox-api-entry__source-link" href="https://github.com/ubugeeei-prod/ox-content/blob/main/npm/vite-plugin-ox-content/src/ssg-output.ts#L83-L93" target="_blank" rel="noopener noreferrer">View source<span class="ox-api-entry__source-icon" aria-hidden="true"></span></a></p>
<div class="ox-api-entry__section ox-api-entry__section--members">
<h4>Members</h4>
<div class="ox-api-entry__member-group">
<h5>Properties</h5>
<table class="ox-api-entry__members-table">
<thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead>
<tbody>
<tr id="planssgoutputsinput-collectionnames">
  <td><code>collectionNames</code><span class="ox-api-badge">optional</span></td>
  <td><code class="ox-api-entry__member-type language-typescript">readonly string[]</code></td>
  <td></td>
</tr>
<tr id="planssgoutputsinput-collections">
  <td><code>collections</code><span class="ox-api-badge">optional</span></td>
  <td><code class="ox-api-entry__member-type language-typescript">Record&lt;string, readonly <a href="./types.md#feediteminput">FeedItemInput</a>[]&gt;</code></td>
  <td></td>
</tr>
<tr id="planssgoutputsinput-items">
  <td><code>items</code><span class="ox-api-badge">optional</span></td>
  <td><code class="ox-api-entry__member-type language-typescript">readonly <a href="./types.md#feediteminput">FeedItemInput</a>[]</code></td>
  <td></td>
</tr>
<tr id="planssgoutputsinput-options">
  <td><code>options</code><span class="ox-api-badge">optional</span></td>
  <td><code class="ox-api-entry__member-type language-typescript"><a href="#planssgoutputsoptions">PlanSsgOutputsOptions</a> | Pick&lt;<a href="./types.md#oxcontentoptions">OxContentOptions</a>, keyof <a href="#planssgoutputsoptions">PlanSsgOutputsOptions</a>&gt;</code></td>
  <td></td>
</tr>
<tr id="planssgoutputsinput-outdir">
  <td><code>outDir</code></td>
  <td><code class="ox-api-entry__member-type language-typescript">string</code></td>
  <td></td>
</tr>
<tr id="planssgoutputsinput-pages">
  <td><code>pages</code></td>
  <td><code class="ox-api-entry__member-type language-typescript">readonly <a href="./types.md#ssgoutputpageinput">SsgOutputPageInput</a>[]</code></td>
  <td></td>
</tr>
<tr id="planssgoutputsinput-root">
  <td><code>root</code><span class="ox-api-badge">optional</span></td>
  <td><code class="ox-api-entry__member-type language-typescript">string</code></td>
  <td></td>
</tr>
<tr id="planssgoutputsinput-sitedescription">
  <td><code>siteDescription</code><span class="ox-api-badge">optional</span></td>
  <td><code class="ox-api-entry__member-type language-typescript">string</code></td>
  <td></td>
</tr>
<tr id="planssgoutputsinput-srcdir">
  <td><code>srcDir</code><span class="ox-api-badge">optional</span></td>
  <td><code class="ox-api-entry__member-type language-typescript">string</code></td>
  <td></td>
</tr>
</tbody>
</table>
</div>
</div>
  </div>
</details>

<details id="planssgoutputsoptions" class="ox-api-entry">
  <summary><span class="ox-api-entry__kind">interface</span><span class="ox-api-entry__summary-main"><code class="ox-api-entry__signature ox-api-entry__signature--highlighted language-typescript">PlanSsgOutputsOptions</code><span class="ox-api-entry__description">Same option objects oxContent() / buildSsg() accept. ssg.enabled is ignored.</span><span class="ox-api-entry__meta"><span class="ox-api-badge">7 members</span></span></span></summary>
  <div class="ox-api-entry__body">
<div class="ox-api-entry__prose">
<p>Same option objects <code>oxContent()</code> / <code>buildSsg()</code> accept. <code>ssg.enabled</code> is ignored.</p>
</div>
<div class="ox-api-entry__section ox-api-entry__section--signature">
<h4>Signature</h4>
<pre><code class="language-typescript">export interface PlanSsgOutputsOptions</code></pre>
</div>
<p class="ox-api-entry__source"><a class="ox-api-entry__source-link" href="https://github.com/ubugeeei-prod/ox-content/blob/main/npm/vite-plugin-ox-content/src/ssg-output.ts#L72-L80" target="_blank" rel="noopener noreferrer">View source<span class="ox-api-entry__source-icon" aria-hidden="true"></span></a></p>
<div class="ox-api-entry__section ox-api-entry__section--members">
<h4>Members</h4>
<div class="ox-api-entry__member-group">
<h5>Properties</h5>
<table class="ox-api-entry__members-table">
<thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead>
<tbody>
<tr id="planssgoutputsoptions-base">
  <td><code>base</code><span class="ox-api-badge">optional</span></td>
  <td><code class="ox-api-entry__member-type language-typescript">string</code></td>
  <td></td>
</tr>
<tr id="planssgoutputsoptions-feeds">
  <td><code>feeds</code><span class="ox-api-badge">optional</span></td>
  <td><code class="ox-api-entry__member-type language-typescript">boolean | <a href="./types.md#feedsoptions">FeedsOptions</a></code></td>
  <td></td>
</tr>
<tr id="planssgoutputsoptions-icons">
  <td><code>icons</code><span class="ox-api-badge">optional</span></td>
  <td><code class="ox-api-entry__member-type language-typescript">boolean | <a href="./types.md#iconsoptions">IconsOptions</a></code></td>
  <td></td>
</tr>
<tr id="planssgoutputsoptions-publishstate">
  <td><code>publishState</code><span class="ox-api-badge">optional</span></td>
  <td><code class="ox-api-entry__member-type language-typescript">boolean | <a href="./types.md#publishstateoptions">PublishStateOptions</a></code></td>
  <td></td>
</tr>
<tr id="planssgoutputsoptions-resources">
  <td><code>resources</code><span class="ox-api-badge">optional</span></td>
  <td><code class="ox-api-entry__member-type language-typescript">boolean | <a href="./types.md#resourcesoptions">ResourcesOptions</a></code></td>
  <td></td>
</tr>
<tr id="planssgoutputsoptions-sitemaps">
  <td><code>siteMaps</code><span class="ox-api-badge">optional</span></td>
  <td><code class="ox-api-entry__member-type language-typescript">boolean | <a href="./types.md#sitemapsoptions">SiteMapsOptions</a></code></td>
  <td></td>
</tr>
<tr id="planssgoutputsoptions-ssg">
  <td><code>ssg</code><span class="ox-api-badge">optional</span></td>
  <td><code class="ox-api-entry__member-type language-typescript">boolean | <a href="./types.md#ssgoptions">SsgOptions</a></code></td>
  <td></td>
</tr>
</tbody>
</table>
</div>
</div>
  </div>
</details>

<details id="ssg-output" class="ox-api-entry">
  <summary><span class="ox-api-entry__kind">module</span><span class="ox-api-entry__summary-main"><code class="ox-api-entry__name">ssg-output</code><span class="ox-api-entry__description">Composable SSG outputs for custom hosts that set ssg: false. Ox Content owns resource fingerprinting, Markdown companio…</span></span></summary>
  <div class="ox-api-entry__body">
<div class="ox-api-entry__prose">
<p>Composable SSG outputs for custom hosts that set <code>ssg: false</code>.</p>
<p>Ox Content owns resource fingerprinting, Markdown companions, feeds, sitemaps, and git lastmod. The host keeps page templates and HTML.</p>
</div>
<p class="ox-api-entry__source"><a class="ox-api-entry__source-link" href="https://github.com/ubugeeei-prod/ox-content/blob/main/npm/vite-plugin-ox-content/src/ssg-output.ts#L1-L6" target="_blank" rel="noopener noreferrer">View source<span class="ox-api-entry__source-icon" aria-hidden="true"></span></a></p>
  </div>
</details>

<details id="ssgoutputplan" class="ox-api-entry">
  <summary><span class="ox-api-entry__kind">interface</span><span class="ox-api-entry__summary-main"><code class="ox-api-entry__signature ox-api-entry__signature--highlighted language-typescript">SsgOutputPlan</code><span class="ox-api-entry__description">Planned writer inputs. Call the matching write* function for each feature.</span><span class="ox-api-entry__meta"><span class="ox-api-badge">5 members</span></span></span></summary>
  <div class="ox-api-entry__body">
<div class="ox-api-entry__prose">
<p>Planned writer inputs. Call the matching <code>write*</code> function for each feature.</p>
</div>
<div class="ox-api-entry__section ox-api-entry__section--signature">
<h4>Signature</h4>
<pre><code class="language-typescript">export interface SsgOutputPlan</code></pre>
</div>
<p class="ox-api-entry__source"><a class="ox-api-entry__source-link" href="https://github.com/ubugeeei-prod/ox-content/blob/main/npm/vite-plugin-ox-content/src/ssg-output.ts#L96-L127" target="_blank" rel="noopener noreferrer">View source<span class="ox-api-entry__source-icon" aria-hidden="true"></span></a></p>
<div class="ox-api-entry__section ox-api-entry__section--members">
<h4>Members</h4>
<div class="ox-api-entry__member-group">
<h5>Properties</h5>
<table class="ox-api-entry__members-table">
<thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead>
<tbody>
<tr id="ssgoutputplan-feeds">
  <td><code>feeds</code></td>
  <td><code class="ox-api-entry__member-type language-typescript">{ outDir: string; base: string; siteUrl?: string; siteName?: string; siteDescription?: string; options: <a href="./types.md#resolvedfeedsoptions">ResolvedFeedsOptions</a>; publishState: <a href="./types.md#resolvedpublishstateoptions">ResolvedPublishStateOptions</a>; collections?: Record&lt;string, readonly <a href="./types.md#feediteminput">FeedItemInput</a>[]&gt;; collectionNames?: readonly string[]; items?: readonly <a href="./types.md#feediteminput">FeedItemInput</a>[] }</code></td>
  <td></td>
</tr>
<tr id="ssgoutputplan-markdowncompanions">
  <td><code>markdownCompanions</code></td>
  <td><code class="ox-api-entry__member-type language-typescript">{ outDir: string; base: string; options: <a href="./types.md#resolvedmarkdownsourceoptions">ResolvedMarkdownSourceOptions</a>; publishState: <a href="./types.md#resolvedpublishstateoptions">ResolvedPublishStateOptions</a>; pages: <a href="./markdown-source.md#markdownsourcepageinput">MarkdownSourcePageInput</a>[] }</code></td>
  <td></td>
</tr>
<tr id="ssgoutputplan-resources">
  <td><code>resources</code></td>
  <td><code class="ox-api-entry__member-type language-typescript"><a href="./ssg-output-write.md#writeresourcefilesinput">WriteResourceFilesInput</a></code></td>
  <td></td>
</tr>
<tr id="ssgoutputplan-selfhostedassets">
  <td><code>selfHostedAssets</code></td>
  <td><code class="ox-api-entry__member-type language-typescript">WriteSelfHostedAssetsInput</code></td>
  <td></td>
</tr>
<tr id="ssgoutputplan-sitemaps">
  <td><code>siteMaps</code></td>
  <td><code class="ox-api-entry__member-type language-typescript">{ outDir: string; base: string; siteUrl?: string; siteName?: string; siteDescription?: string; options: <a href="./types.md#resolvedsitemapsoptions">ResolvedSiteMapsOptions</a>; pages: <a href="./site-maps.md#sitemappageinput">SiteMapPageInput</a>[] }</code></td>
  <td></td>
</tr>
</tbody>
</table>
</div>
</div>
  </div>
</details>
