This is a plugin that lets you roll-up your .d.ts
definition files.
Install the package from npm
:
$ npm install --save-dev rollup-plugin-dts
Add it to your rollup.config.js
:
import dts from "rollup-plugin-dts";
const config = [
// …
{
input: "./my-input/index.d.ts",
output: [{ file: "dist/my-library.d.ts", format: "es" }],
plugins: [dts()],
},
];
export default config;
And then instruct typescript where to find your definitions inside your package.json
:
"types": "dist/my-library.d.ts",
NOTE that the plugin will automatically mark any external library
(@types
for example) as external
, so those will be excluded from bundling.
Well, ideally TypeScript should just do all this itself, and it even has a proposal to do that. But there hasn’t been any progress in ~3 years.
Some projects, like rollup itself go the route of completely separating their public interfaces in a separate file.
See some discussions about all three of these projects and their tradeoffs.