rollup-plugin-dts-merger
v2.0.0
Published
A Rollup plugin for merging your hand written .d.ts files into the final output type file.
Maintainers
Readme
For more awesome packages, check out my homepage💛
Note: options in 2.0.0 is not completely compatible with 1.x.x !! see the details
Features
- 🚀 Auto merge: Automatically finds and merges all
.d.tsfiles from specified directories - 🔄 Content replacement: Built-in string/regex replacement functionality with support for functions
- 🎯 Flexible filtering: Include/exclude patterns using glob syntax
- 📦 Zero dependencies: Lightweight and fast
- 🔧 Simple configuration: Minimal setup required
Usage
Basic Usage
// rollup.config.js
import dts from 'rollup-plugin-dts';
import dtsMerger from 'rollup-plugin-dts-merger';
export default {
input: 'src/index.ts',
output: { file: 'dist/index.d.ts', format: 'es' },
plugins: [
dts(), // Generate .d.ts first
dtsMerger({
include: ['src/**'], // ← this is default value
exclude: ['test/**', 'tests/**', 'dist/**', 'node_modules/**'], // ← this is default value
mergeInto: 'dist/index.d.ts', // ← this is default value
replace: {
'/*__DEV__*/': 'export',
__VERSION__: '2.0.0',
},
}), // Then merge additional .d.ts files
],
};Options
include
- Type: Glob filter pattern
- Default:
['src/**'] - Description: Glob patterns to include files/directories. All
.d.tsfiles in these locations will be merged.
exclude
- Type: Glob filter pattern
- Default:
['test/**', 'tests/**', 'dist/**', 'node_modules/**']- Definitely exclude
node_modules(even if you pass[]to it) to avoid unnecessary processing
- Definitely exclude
- Description: Glob patterns to exclude files/directories from merging.
mergeInto
- Type:
string - Default:
'dist/index.d.ts' - Description: Target file path where all
.d.tscontent will be merged into. This file must exist before merging (usually created byrollup-plugin-dts).
replace
- Type:
Record<string, any> - Default:
{} - Description: Key-value pairs for content replacement. Values can be:
- string: Direct replacement
- function:
(key: string) => string- Dynamic replacement based on the key - other types: Converted to string
Replace Examples
{
replace: {
// String replacement
'__VERSION__': '2.0.0',
// Remove development flags
'/*__DEV__*/': '',
// Add export keywords
'/*__EXPORT__*/': 'export',
// Function-based replacement
'__TIMESTAMP__': () => Date.now().toString(),
// Type/value replacements
'DEBUG_MODE': false,
'MAX_ITEMS': 100,
'API_ENDPOINT': null
}
}How It Works
- Find files: Scans directories matching
includepatterns for.d.tsfiles - Filter: Excludes files matching
excludepatterns - Replace content: Applies
replacerules to both target file and source files - Merge: Appends all source file content to the target file with source path comments
License
MIT
Author
- Name: KasukabeTsumugi
- Email: [email protected]
✨ Enjoy merging your TypeScript declarations! ✨
