CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-vite-plugin-dts

A Vite plugin that generates TypeScript declaration files from source files in library mode

Pending
Overview
Eval results
Files

plugin-configuration.mddocs/

Plugin Configuration

Comprehensive configuration options for the vite-plugin-dts plugin, controlling declaration file generation, TypeScript compilation, and build integration.

Capabilities

Core Plugin Function

Main plugin factory function that creates a Vite plugin instance with TypeScript declaration generation capabilities.

/**
 * Creates a Vite plugin that generates declaration files from TypeScript and Vue source files
 * @param options - Configuration options for the plugin
 * @returns Configured Vite plugin instance
 */
function dts(options?: PluginOptions): import('vite').Plugin;

Usage Examples:

import { defineConfig } from "vite";
import dts from "vite-plugin-dts";

// Basic usage with default settings
export default defineConfig({
  plugins: [dts()]
});

// Advanced configuration
export default defineConfig({
  plugins: [
    dts({
      outDir: ["dist", "types"],
      include: ["src/**/*.ts", "src/**/*.vue"],
      exclude: ["src/**/*.test.ts"],
      rollupTypes: true,
      insertTypesEntry: true
    })
  ]
});

Plugin Options Interface

Complete configuration interface defining all available plugin options.

interface PluginOptions {
  /** Specify root directory (defaults to Vite config root or process.cwd()) */
  root?: string;
  
  /** Output directory for declaration files (can be array for multiple outputs) */
  outDir?: string | string[];
  
  /** Override root path of entry files (useful in monorepos) */
  entryRoot?: string;
  
  /** Restrict declaration files output to outDir (default: true) */
  strictOutput?: boolean;
  
  /** Override TypeScript compiler options */
  compilerOptions?: ts.CompilerOptions | null;
  
  /** Specify tsconfig.json path for resolving include/exclude globs */
  tsconfigPath?: string;
  
  /** Custom resolvers for non-standard file types (default: []) */
  resolvers?: Resolver[];
  
  /** Parse tsconfig.json paths to aliases for declaration files (default: true) */
  pathsToAliases?: boolean;
  
  /** Exclude paths when transforming aliases (default: []) */
  aliasesExclude?: (string | RegExp)[];
  
  /** Transform '.vue.d.ts' filenames to '.d.ts' (default: false) */
  cleanVueFileName?: boolean;
  
  /** Transform dynamic imports to static imports (default: false, forced true when rollupTypes is true) */
  staticImport?: boolean;
  
  /** Override include glob patterns (relative to root) */
  include?: string | string[];
  
  /** Override exclude glob patterns (default: 'node_modules/**') */
  exclude?: string | string[];
  
  /** Remove pure import statements like 'import "xxx"' (default: true) */
  clearPureImport?: boolean;
  
  /** Generate types entry file(s) based on package.json types property (default: false, forced true when rollupTypes is true) */
  insertTypesEntry?: boolean;
  
  /** Bundle declaration files using @microsoft/api-extractor (default: false) */
  rollupTypes?: boolean;
  
  /** Bundled packages configuration for @microsoft/api-extractor (default: []) */
  bundledPackages?: string[];
  
  /** Override @microsoft/api-extractor configuration */
  rollupConfig?: RollupConfig;
  
  /** Override @microsoft/api-extractor invoke options */
  rollupOptions?: IExtractorInvokeOptions;
  
  /** Copy existing .d.ts source files to outDir (default: false) */
  copyDtsFiles?: boolean;
  
  /** Emit only declaration files, removing all other Vite outputs (default: false) */
  declarationOnly?: boolean;
  
  /** Logging level for this plugin (defaults to Vite config logLevel) */
  logLevel?: LogLevel;
  
  /** Hook called after TypeScript diagnostics are emitted */
  afterDiagnostic?: (diagnostics: readonly ts.Diagnostic[]) => MaybePromise<void>;
  
  /** Hook called before writing each declaration file (return false to skip file) */
  beforeWriteFile?: (
    filePath: string,
    content: string
  ) => MaybePromise<void | false | { filePath?: string; content?: string }>;
  
  /** Hook called after declaration files are bundled with rollupTypes */
  afterRollup?: (result: ExtractorResult) => MaybePromise<void>;
  
  /** Hook called after all declaration files are written */
  afterBuild?: (emittedFiles: Map<string, string>) => MaybePromise<void>;
}

Directory and Path Configuration

Options controlling file paths and directory structure for generated declaration files.

// Root directory configuration
root?: string;

// Output directory (single or multiple)
outDir?: string | string[];

// Entry root for monorepo scenarios
entryRoot?: string;

// Restrict output to specified directories
strictOutput?: boolean;

Usage Examples:

// Multiple output directories
dts({
  outDir: ["dist/types", "lib/types"]
});

// Monorepo configuration
dts({
  root: "./packages/core",
  entryRoot: "./packages/core/src",
  outDir: "./packages/core/dist"
});

TypeScript Compiler Configuration

Options for customizing TypeScript compilation behavior and tsconfig.json integration.

// TypeScript compiler options override
compilerOptions?: ts.CompilerOptions | null;

// Path to specific tsconfig.json file
tsconfigPath?: string;

// File inclusion/exclusion patterns
include?: string | string[];
exclude?: string | string[];

Usage Examples:

// Override compiler options
dts({
  compilerOptions: {
    target: "ES2020",
    module: "ESNext",
    strict: true
  }
});

// Use specific tsconfig
dts({
  tsconfigPath: "./tsconfig.build.json"
});

// Custom file patterns
dts({
  include: ["src/**/*.ts", "types/**/*.d.ts"],
  exclude: ["**/*.test.ts", "**/*.spec.ts"]
});

Import and Alias Configuration

Settings for handling module aliases and import transformations in generated declaration files.

// Convert tsconfig paths to Vite aliases
pathsToAliases?: boolean;

// Exclude specific aliases from transformation
aliasesExclude?: (string | RegExp)[];

// Convert dynamic to static imports
staticImport?: boolean;

// Remove pure import statements
clearPureImport?: boolean;

Usage Examples:

// Disable alias transformation for specific patterns
dts({
  pathsToAliases: true,
  aliasesExclude: [/^@types\//, "virtual:*"]
});

// Force static imports for better bundling
dts({
  staticImport: true,
  clearPureImport: false
});

Declaration File Generation Options

Configuration for the structure and format of generated declaration files.

// Generate main entry declaration files
insertTypesEntry?: boolean;

// Bundle all declarations into single files
rollupTypes?: boolean;

// Copy existing .d.ts files
copyDtsFiles?: boolean;

// Remove non-declaration outputs
declarationOnly?: boolean;

// Clean Vue file naming
cleanVueFileName?: boolean;

Usage Examples:

// Bundle declarations with entry generation
dts({
  insertTypesEntry: true,
  rollupTypes: true,
  declarationOnly: true
});

// Vue project configuration
dts({
  cleanVueFileName: true,
  include: ["src/**/*.ts", "src/**/*.vue"]
});

Build Lifecycle Hooks

Callback functions for customizing plugin behavior at different stages of the build process.

/**
 * Called after TypeScript diagnostics are emitted
 * Use diagnostics.length to check for type errors
 */
afterDiagnostic?: (diagnostics: readonly ts.Diagnostic[]) => MaybePromise<void>;

/**
 * Called before writing each declaration file
 * Return false to skip the file, or modify path/content
 */
beforeWriteFile?: (
  filePath: string,
  content: string
) => MaybePromise<void | false | { filePath?: string; content?: string }>;

/**
 * Called after declaration bundling with api-extractor
 */
afterRollup?: (result: ExtractorResult) => MaybePromise<void>;

/**
 * Called after all declaration files are written
 * Receives map of file paths to their content
 */
afterBuild?: (emittedFiles: Map<string, string>) => MaybePromise<void>;

Usage Examples:

dts({
  afterDiagnostic: async (diagnostics) => {
    if (diagnostics.length > 0) {
      console.warn(`Found ${diagnostics.length} type issues`);
    }
  },
  
  beforeWriteFile: async (filePath, content) => {
    // Add custom header to all declaration files
    if (filePath.endsWith('.d.ts')) {
      return {
        content: `// Generated by vite-plugin-dts\n${content}`
      };
    }
  },
  
  afterBuild: async (emittedFiles) => {
    console.log(`Generated ${emittedFiles.size} declaration files`);
  }
});

Install with Tessl CLI

npx tessl i tessl/npm-vite-plugin-dts

docs

built-in-resolvers.md

custom-resolvers.md

index.md

plugin-configuration.md

utility-functions.md

tile.json