rollup-plugin-typescript
Version:
Seamless integration between Rollup and TypeScript.
92 lines (69 loc) • 3.67 kB
Markdown
# rollup-plugin-typescript
[](https://travis-ci.org/rollup/rollup-plugin-typescript)



Seamless integration between Rollup and Typescript.
## Why?
See [rollup-plugin-babel](https://github.com/rollup/rollup-plugin-babel).
## Installation
```bash
npm install --save-dev rollup-plugin-typescript typescript tslib
```
Note that both `typescript` and `tslib` are peer dependencies of this plugin that need to be installed separately.
## Usage
```js
// rollup.config.js
import typescript from 'rollup-plugin-typescript';
export default {
input: './main.ts',
plugins: [
typescript()
]
}
```
The plugin loads any [`compilerOptions`](http://www.typescriptlang.org/docs/handbook/compiler-options.html) from the `tsconfig.json` file by default. Passing options to the plugin directly overrides those options:
```js
...
export default {
input: './main.ts',
plugins: [
typescript({lib: ["es5", "es6", "dom"], target: "es5"})
]
}
```
The following options are unique to `rollup-plugin-typescript`:
* `options.include` and `options.exclude` (each a minimatch pattern, or array of minimatch patterns), which determine which files are transpiled by Typescript (all `.ts` and `.tsx` files by default).
* `tsconfig` when set to false, ignores any options specified in the config file. If set to a string that corresponds to a file path, the specified file will be used as config file.
* `typescript` overrides TypeScript used for transpilation:
```js
typescript({
typescript: require('some-fork-of-typescript')
})
```
* `tslib` overrides the injected TypeScript helpers with a custom version
```js
typescript({
tslib: require('some-fork-of-tslib')
})
```
### TypeScript version
Due to the use of `tslib` to inject helpers, this plugin requires at least [TypeScript 2.1](https://github.com/Microsoft/TypeScript/wiki/Roadmap#21-december-2016). See also [here](https://blog.mariusschulz.com/2016/12/16/typescript-2-1-external-helpers-library#the-importhelpers-flag-and-tslib).
### Importing CommonJS
Though it is not recommended, it is possible to configure this plugin to handle imports of CommonJS files from TypeScript. For this, you need to specify `CommonJS` as the module format and add `rollup-plugin-commonjs` to transpile the CommonJS output generated by TypeScript to ES Modules so that rollup can process it.
```js
// rollup.config.js
import typescript from 'rollup-plugin-typescript';
import commonjs from 'rollup-plugin-commonjs';
export default {
input: './main.ts',
plugins: [
typescript({module: 'CommonJS'}),
commonjs({extensions: ['.js', '.ts']}) // the ".ts" extension is required
]
}
```
Note that this will often result in less optimal output.
## Issues
This plugin will currently **not warn for any type violations**. This plugin relies on TypeScript's [transpileModule](https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-simple-transform-function) function which basically transpiles TypeScript to JavaScript by stripping any type information on a per-file basis. While this is faster than using the language service, no cross-file type checks are possible with this approach.
This also causes issues with emit-less types, see [#28](https://github.com/rollup/rollup-plugin-typescript/issues/28).