ts-migrate-plugins is designed as a set of plugins, so that it can be pretty customizable for different use-cases. This package contains a set of codemodes (plugins), which are doing transformation of js/jsx -> ts/tsx.
ts-migrate-plugins is designed around Airbnb projects. Use at your own risk.
Install ts-migrate using npm:
npm install --save-dev ts-migrate-plugins
yarn add --dev ts-migrate-plugins
;;;// get input files folder;// initialize a typescript server;process.on'exit',;// create new migration config and add ts-ignore plugin with empty options;// run migration;// kill serverserver.kill;process.exitexitCode;
|declare-missing-class-properties||Declare missing class properties.|
|eslint-fix||Run eslint fix to fix any eslint violations that happened along the way.|
|explicit-any||Annotate variables with
|hoist-class-statics||Hoist static class members into the class body (vs. assigning them after the class definition).|
|jsdoc||Convert JSDoc @param types to TypeScript annotations.|
|member-accessibility||Add accessibility modifiers (private, protected, or public) to class members according to naming conventions.|
|react-class-lifecycle-methods||Annotate React lifecycle method types.|
|react-class-state||Declare React state type.|
|react-default-props||Annotate React default props.|
|react-props||Convert React prop types to TypeScript type.|
|react-shape||Convert prop types shapes to TypeScript type.|
Type of plugins
We have three main categories of plugins:
Text based plugins. Plugins of this category are operating with a text of source files and operate based on this. Example: example-plugin-text.
TypeScript ast-based plugins. The main idea behind these plugins is by parsing Abstract Syntax Tree with TypeScript compiler API, we can generate an array of updates for the text and apply them to the source file. Example: example-plugin-ts.
What is the ts-migrate plugin?
The plugin is an abstraction around codemodes which provides centralized interfaces for the ts-migrate. Plugins should implement the following interface:
How I can write my own plugin?
I have an issue with a specific plugin, what should I do?
Please file an issue here.
See the Contributors Guide.