@vitrail/rollup-plugin-typescript

@vitrail/rollup-plugin-typescript

NPM version Build Status Coverage percentage

A Rollup plugin for seamless integration between Rollup and TypeScript.

This plugin was written because none of the two main TypeScript plugins available for Rollup are satisfactory:

  • @rollup/plugin-typescript:

    • Watches files and triggers re-build by itself, meaning that it conflicts with any development tool that is not Rollup. See this issue for more information.
    • Doesn't work consistently depending on where Rollup is executed, meaning that it can't be used in any other context than the opinionated one that it was written with in mind. See this issue for more information.
    • Doesn't work at all as soon as there is a source file in the current working directory that is not valid, even if it is not part of the dependency graph of the entry point. See this issue for more information.
    • Is opinionated instead of honoring TypeScript compiler options as they are passed, basically babysitting developers instead of considering that they know what they are doing.
    • Doesn't honor tsconfig.json compiler options.
  • rollup-plugin-typescript2:

    • Doesn't work at all as soon as there is a source file in the current working directory that is not valid, even if it is not part of the dependency graph of the entry point.
    • Is opinionated instead of honoring TypeScript compiler options as they are passed, basically babysitting developers instead of considering that they know what they are doing.
    • Doesn't honor tsconfig.json compiler options.

Additionally, this plugin is likely to be faster on big projects than both the two main alternatives thanks to its native support of the incremental feature of TypeScript compiler and the reliance on the canonical resolution algorithm of the TypeScript compiler that considers only the files that are part of the entry point dependency graph.

This plugin requires at least Rollup 4.9.

The recommended way to install the package is via npm:

npm install @vitrail/rollup-plugin-typescript --save-dev

Create a Rollup configuration file, import the plugin factory and add an instance to the list of plugins:

// rollup.config.mjs
import {createTypeScriptPlugin} from '@vitrail/rollup-plugin-typescript';

export default {
input: 'index.ts',
output: {
dir: 'output'
},
plugins: [
createTypeScriptPlugin()
]
};
rollup -i index.ts -o index.js -p @vitrail/rollup-plugin-typescript
import type {CompilerOptions} from "typescript";
import type {Rollup} from "rollup";

type PluginFactory = (options?: {
compilerOptions?: CompilerOptions;
exclude?: ReadonlyArray<string | RegExp> | string | RegExp;
include?: ReadonlyArray<string | RegExp> | string | RegExp;
}) => Plugin<null>;

An instance of TypeScript CompilerOptions, minus the properties inlineSourceMap and sourceMap. Used by the factory to either override the compiler options resolved from the first available tsconfig.json file (starting from the current working directory) if any, or as the entire set of compiler options otherwise.

Note that the inlineSourceMap and sourceMap properties will always be passed as false and true, respectively, to the underlying TypeScript compiler, in order to guarantee that the plugin is always capable of returning a source map to the Rollup engine.

A pattern, or an array of patterns, which specifies the files in the build the plugin should ignore. By default, no files are ignored.

A pattern, or an array of patterns, which specifies the files in the build the plugin should operate on. By default, .ts, .cts, .mts and .tsx files are targeted.