1. @lang/rollup-plugin-dts
An experiment to generate .d.ts rollup files
@lang/rollup-plugin-dts
Package: @lang/rollup-plugin-dts
Created by: Swatinem
Last modified: Wed, 06 Apr 2022 00:46:22 GMT
Version: 2.0.2
License: LGPL-3.0
Downloads: 4,802
Repository: https://github.com/Swatinem/rollup-plugin-dts

Install

npm install @lang/rollup-plugin-dts
yarn add @lang/rollup-plugin-dts

rollup-plugin-dts

Build Status
Coverage Status

This is a plugin that lets you roll-up your .d.ts definition files.

Usage

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.

What to expect

While this plugin is fairly complete, it does not support all imaginable use-cases.
In particular, the plugin works best with already existing .d.ts files generated
by the typescript compiler from idiomatic code.

Working with .ts(x) or even .js(x) (when setting allowJs: true) does work,
but is not recommended.

The plugin does its own import resolution through the typescript compiler, and
usage together with other resolution plugins, such as node-resolve can lead
to errors and is not recommended.

All external dependencies from node_modules are automatically excluded from
bundling. This can be overridden using the respectExternal setting, but it is
generally not recommended. While rollup of external @types generally works,
it is not recommended.

Why?

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.

Alternatives

See
some
discussions
about some of these projects and their tradeoffs.

How does it work

License

The code is licensed under the copyleft LGPL-3.0. I have no intention to
license this under any non-copyleft license.

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code