PageSourceSearch

https://dtsx.netlify.app/assets/usage.md.D71FfFVS.js

js dtsx.netlify.app collected 2026-10-03 10:41:10 UTC 40,279 bytes, 133 lines download raw bytes

1import{_ as i,i as a,o as n,ak as t}from"./chunks/framework.Da91f1N-.js";const g=JSON.parse('{"title":"Get Started","description":"","frontmatter":{},"headers":[],"relativePath":"usage.md","filePath":"usage.md"}'),e={name:"usage.md"};function l(h,s,p,k,r,d){return n(),a("div",null,s[0]||(s[0]=[t(`<h1 id="get-started" tabindex="-1">Get Started <a class="header-anchor" href="#get-started" aria-label="Permalink to &quot;Get Started&quot;">​</a></h1><p>There are two ways of using this &quot;.d.ts generation&quot; tool: <em>as a library or as a CLI.</em></p><p><em>But before you get started, please ensure you enabled <code>isolatedDeclarations</code> in your <code>tsconfig.json</code> file.</em></p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
2<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  &quot;compilerOptions&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
3<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">    &quot;isolatedDeclarations&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span>
4<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  }</span></span>
5<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="library" tabindex="-1">Library <a class="header-anchor" href="#library" aria-label="Permalink to &quot;Library&quot;">​</a></h2><p>Given the npm package is installed, you can use the <code>generate</code> function to generate TypeScript declaration files from your project.</p><h3 id="usage" tabindex="-1">Usage <a class="header-anchor" href="#usage" aria-label="Permalink to &quot;Usage&quot;">​</a></h3><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { DtsGenerationConfig } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;@stacksjs/dtsx&#39;</span></span>
6<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { generate } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;@stacksjs/dtsx&#39;</span></span>
7<span class="line"></span>
8<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> config</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> DtsGenerationConfig</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
9<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  cwd: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;./&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// default: process.cwd()</span></span>
10<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  root: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;./src&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// default: &#39;./src&#39;</span></span>
11<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  entrypoints: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;**/*.ts&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">], </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// default: [&#39;**/*.ts&#39;]</span></span>
12<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  outdir: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;./dist&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// default: &#39;./dist&#39;</span></span>
13<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  keepComments: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// default: true</span></span>
14<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  clean: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// default: true</span></span>
15<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  tsconfigPath: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;./tsconfig.json&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// default: &#39;./tsconfig.json&#39;</span></span>
16<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  outputStructure: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;mirror&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// default: &#39;mirror&#39; | &#39;flat&#39;</span></span>
17<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">
17  verbose: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// default: false</span></span>
18<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
19<span class="line"></span>
20<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> generate</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(config)</span></span></code></pre></div><h3 id="partial-configuration" tabindex="-1">Partial Configuration <a class="header-anchor" href="#partial-configuration" aria-label="Permalink to &quot;Partial Configuration&quot;">​</a></h3><p>You can also provide partial configuration, and defaults will be used for missing options:</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { generate } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;@stacksjs/dtsx&#39;</span></span>
21<span class="line"></span>
22<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// Minimal configuration</span></span>
23<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> generate</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
24<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  root: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;./lib&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
25<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  outdir: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;./types&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
26<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">})</span></span>
27<span class="line"></span>
28<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// With comment preservation disabled</span></span>
29<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> generate</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
30<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  root: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;./src&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
31<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  outdir: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;./dist&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
32<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  keepComments: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
33<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">})</span></span></code></pre></div><h3 id="configuration-file" tabindex="-1">Configuration File <a class="header-anchor" href="#configuration-file" aria-label="Permalink to &quot;Configuration File&quot;">​</a></h3><p>
33Library usage can also be configured using a <code>dts.config.ts</code> <em>(or <code>dts.config.js</code>)</em> file which is automatically loaded when running the <code>./dtsx</code> <em>(or <code>bunx dtsx</code>)</em> command. It is also loaded when the <code>generate</code> function is called, unless custom options are provided.</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// dts.config.ts (or dts.config.js)</span></span>
34<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { DtsGenerationConfig } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;@stacksjs/dtsx&#39;</span></span>
35<span class="line"></span>
36<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> config</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> DtsGenerationConfig</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
37<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  cwd: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;./&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
38<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  root: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;./src&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
39<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  entrypoints: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;**/*.ts&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span>
40<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  outdir: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;./dist&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
41<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  keepComments: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
42<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  clean: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
43<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  outputStructure: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;mirror&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
44<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  verbose: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
45<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
46<span class="line"></span>
47<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> config</span></span></code></pre></div><p><em>You may also run:</em></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span>
47<pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">./dtsx</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> generate</span></span>
48<span class="line"></span>
49<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># if the package is installed, you can also run:</span></span>
50<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># bunx dtsx generate</span></span></code></pre></div><h2 id="cli" tabindex="-1">CLI <a class="header-anchor" href="#cli" aria-label="Permalink to &quot;CLI&quot;">​</a></h2><p>The <code>dtsx</code> CLI provides a simple way to generate TypeScript declaration files from your project. Here&#39;s how to use it:</p><h3 id="basic-usage" tabindex="-1">Basic Usage <a class="header-anchor" href="#basic-usage" aria-label="Permalink to &quot;Basic Usage&quot;">​</a></h3><p>Generate declaration files using the default options:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> generate</span></span></code></pre></div><p>Or use the default command (same as <code>generate</code>):</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span></span></code></pre></div><h3 id="custom-options" tabindex="-1">Custom Options <a class="header-anchor" href="#custom-options" aria-label="Permalink to &quot;Custom Options&quot;">​</a></h3><p>Use custom options to override defaults:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Generate declarations for specific entry points:</span></span>
51<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> generate</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --entrypoints</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> src/index.ts,src/utils.ts</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --outdir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dist/types</span></span>
52<span class="line"></span>
53<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Generate declarations with custom configuration:</span></span>
54<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> generate</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --root</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ./lib</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --outdir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ./types</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --clean</span></span>
55<span class="line"></span>
56<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Disable comment preservation:</span></span>
57<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> generate</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">
57 --keep-comments=false</span></span>
58<span class="line"></span>
59<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Enable verbose logging:</span></span>
60<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> generate</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --verbose</span></span>
61<span class="line"></span>
62<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Use flat output structure:</span></span>
63<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> generate</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --output-structure</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> flat</span></span></code></pre></div><h3 id="cli-options" tabindex="-1">CLI Options <a class="header-anchor" href="#cli-options" aria-label="Permalink to &quot;CLI Options&quot;">​</a></h3><table tabindex="0"><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td><code>--cwd &lt;path&gt;</code></td><td><code>string</code></td><td>current directory</td><td>Set the current working directory</td></tr><tr><td><code>--root &lt;path&gt;</code></td><td><code>string</code></td><td><code>&#39;./src&#39;</code></td><td>Specify the root directory of the project</td></tr><tr><td><code>--entrypoints &lt;files&gt;</code></td><td><code>string</code></td><td><code>&#39;**/*.ts&#39;</code></td><td>Define entry point files (comma-separated)</td></tr><tr><td><code>--outdir &lt;path&gt;</code></td><td><code>string</code></td><td><code>&#39;./dist&#39;</code></td><td>Set the output directory for generated .d.ts files</td></tr><tr><td><code>--keep-comments [value]</code></td><td><code>boolean</code></td><td><code>true</code></td><td>Keep comments in generated .d.ts files</td></tr><tr><td><code>--clean</code></td><td><code>boolean</code></td><td><code>true</code></td><td>Clean output directory before generation</td></tr><tr><td><code>--tsconfig &lt;path&gt;</code></td><td><code>string</code></td><td><code>&#39;tsconfig.json&#39;</code></td><td>Specify the path to tsconfig.json</td></tr><tr><td><code>--output-structure &lt;type&gt;</code></td><td><code>&#39;mirror&#39; | &#39;flat&#39;</code></td><td><code>&#39;mirror&#39;</code></td><td>Set output directory structure</td></tr><tr><td><code>--verbose</code></td><td><code>boolean</code></td><td><code>false</code></td><td>Enable verbose output</td></tr></tbody></table><h3 id="cli-examples" tabindex="-1">CLI Examples <a class="header-anchor" href="#cli-examples" aria-label="Permalink to &quot;CLI Examples&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Basic generation</span></span>
64<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span></span>
65<span class="line"></span>
66<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Generate with specific entry points</span></span>
67<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --entrypoints</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;src/index.ts,src/types.ts&quot;</span></span>
68<span class="line"></span>
69<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Generate with flat structure</span></span>
70<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --root</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ./lib</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --outdir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ./types</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --output-structure</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> flat</span></span>
71<span class="line"></span>
72<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Generate without comments</span></span>
73<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">
73 --keep-comments=false</span></span>
74<span class="line"></span>
75<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Generate with verbose logging</span></span>
76<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --verbose</span></span>
77<span class="line"></span>
78<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Generate with custom tsconfig</span></span>
79<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --tsconfig</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ./tsconfig.build.json</span></span>
80<span class="line"></span>
81<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Clean and generate</span></span>
82<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --clean</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --verbose</span></span></code></pre></div><h3 id="version-and-help" tabindex="-1">Version and Help <a class="header-anchor" href="#version-and-help" aria-label="Permalink to &quot;Version and Help&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Show version</span></span>
83<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --version</span></span>
84<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> version</span></span>
85<span class="line"></span>
86<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Show help</span></span>
87<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dtsx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --help</span></span></code></pre></div><h2 id="advanced-usage" tabindex="-1">Advanced Usage <a class="header-anchor" href="#advanced-usage" aria-label="Permalink to &quot;Advanced Usage&quot;">​</a></h2><h3 id="multiple-entry-points" tabindex="-1">Multiple Entry Points <a class="header-anchor" href="#multiple-entry-points" aria-label="Permalink to &quot;Multiple Entry Points&quot;">​</a></h3><p>You can specify multiple entry points using glob patterns:</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> generate</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
88<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  entrypoints: [</span></span>
89<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">    &#39;src/index.ts&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
90<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">    &#39;src/components/**/*.ts&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
91<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">    &#39;src/utils/**/*.ts&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
92<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">    &#39;!src/**/*.test.ts&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// Exclude test files</span></span>
93<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  ],</span></span>
94<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">})</span></span></code></pre></div><h3 id="output-structure-options" tabindex="-1">Output Structure Options <a class="header-anchor" href="#output-structure-options" aria-label="Permalink to &quot;Output Structure Options&quot;">​</a></h3><p>Choose between mirroring source structure or flat output:</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span>
94<pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// Mirror source structure (default)</span></span>
95<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> generate</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
96<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  outputStructure: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;mirror&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
97<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">})</span></span>
98<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// src/components/Button.ts → dist/components/Button.d.ts</span></span>
99<span class="line"></span>
100<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// Flat structure</span></span>
101<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> generate</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
102<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  outputStructure: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;flat&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
103<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">})</span></span>
104<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// src/components/Button.ts → dist/Button.d.ts</span></span></code></pre></div><h3 id="comment-preservation" tabindex="-1">Comment Preservation <a class="header-anchor" href="#comment-preservation" aria-label="Permalink to &quot;Comment Preservation&quot;">​</a></h3><p>Control comment preservation in generated declarations:</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// Preserve all comments (default)</span></span>
105<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> generate</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
106<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  keepComments: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
107<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">})</span></span>
108<span class="line"></span>
109<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// Remove comments for smaller output</span></span>
110<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> generate</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
111<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  keepComments: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
112<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">})</span></span></code></pre></div><p>When <code>keepComments</code> is enabled, the following are preserved:</p><ul><li>JSDoc comments with tags (<code>@param</code>, <code>@returns</code>, <code>@example</code>, etc.)</li><li>Block comments (<code>/* ... */</code>)</li><li>Single-line comments (<code>//</code>)</li></ul><h3 id="error-handling" tabindex="-1">Error Handling <a class="header-anchor" href="#error-handling" aria-label="Permalink to &quot;Error Handling&quot;">​</a></h3><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span>
112<pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { generate } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;@stacksjs/dtsx&#39;</span></span>
113<span class="line"></span>
114<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">try</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
115<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> generate</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
116<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    root: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;./src&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
117<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    outdir: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;./dist&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
118<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  })</span></span>
119<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;✅ Declaration files generated successfully!&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
120<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">} </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">catch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (error) {</span></span>
121<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">error</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;❌ Failed to generate declaration files:&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, error)</span></span>
122<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  process.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">exit</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
123<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h3 id="integration-with-build-tools" tabindex="-1">Integration with Build Tools <a class="header-anchor" href="#integration-with-build-tools" aria-label="Permalink to &quot;Integration with Build Tools&quot;">​</a></h3><h4 id="package-json-scripts" tabindex="-1">Package.json Scripts <a class="header-anchor" href="#package-json-scripts" aria-label="Permalink to &quot;Package.json Scripts&quot;">​</a></h4><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
124<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  &quot;scripts&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
125<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">    &quot;build:types&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;
125dtsx&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
126<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">    &quot;build:types:clean&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;dtsx --clean&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
127<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">    &quot;build:types:verbose&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;dtsx --verbose&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
128<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">    &quot;build:types:flat&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;dtsx --output-structure flat&quot;</span></span>
129<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  }</span></span>
130<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h4 id="with-build-pipelines" tabindex="-1">With Build Pipelines <a class="header-anchor" href="#with-build-pipelines" aria-label="Permalink to &quot;With Build Pipelines&quot;">​</a></h4><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># In CI/CD or build scripts</span></span>
131<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> build:types</span></span>
132<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span>
133<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">bunx</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dtsx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --clean</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --verbose</span></span></code></pre></div><p>To learn more, head over to the <a href="https://dtsx.stacksjs.org/" target="_blank" rel="noreferrer">documentation</a>.</p>`,52)]))}const c=i(e,[["render",l]]);export{g as __pageData,c as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.