Skip to content
This repository has been archived by the owner on Jun 18, 2019. It is now read-only.

Latest commit

 

History

History
50 lines (31 loc) · 1.83 KB

README.md

File metadata and controls

50 lines (31 loc) · 1.83 KB

Flow to TypeScript Migration Tools

These are a collection of tools that we used at Quizlet when migrating from Flow to TypeScript. We hope that you find these tools useful when doing your own migration, but keep in mind that they are made for the particularities of Quizlet's large codebase. You may need to modify these tools to suit your needs, but that said, they should be at the very least a good starting point.

The converter uses a fork of babel-plugin-flow-to-typescript along with Recast to preserve formatting. As it runs, it will rename files to .ts (or .tsx if it contains React), along with any snaps. In order to preserve the git history, this runs the conversion and commits the changes, and then renames all the files in a separate commit.

Installation

yarn add --dev quizlet/ts-migration.git[#commit]

This tool assumes:

  1. TypeScript is installed in your codebase, and you have a tsconfig.json configured to suit your needs.
  2. You use prettier, and you have a .prettierrc.

Commands:

Once installed, you can access the tools via the binary.

Preview a conversion (without renaming files):

yarn ts-migration convert-codebase

Convert the codebase and rename files to .ts[x]:

yarn ts-migration convert-codebase --commit

Ignore all TypeScript errors:

yarn ts-migration ignore-errors [--commit] [--includeJSX]

The --includeJSX option can be extremely useful when you have a lot of errors you want to ignore, but will insert ignore comments in such a way that they can appear in the rendered HTML, so be sure to carefully review the output!

Strip Flow comments

yarn ts-migration strip-comments [--commit]

License

ts-migration is MIT licensed.