tw-cli
v0.6.0
Published
TypeScript -> Flow Converter
Downloads
8
Readme
🎉 Using TypeScript is fun, but Flow is even better. The typing systems are similar, but the community is quickly supporting Flow for React. Take React Native for example, Flow is supported by default while TypeScript is a nightmare to configure (think /build
dir, hot reloading, and concurrent typescript compilation separate from babel).
With this increase in open-source effort, many companies are doubling down on Flow (Facebook, Uber, etc.).
⚡️ Tell TypeWriter which files you care about, and it will run a big list of codemods instantly!
⚠️ This is early stage software. There will be bugs. Please help improve it by using this and reporting issues ⚠️
🔧 There is minor manual work after running TypeWriter. If you see room for improvement, create an issue!
Install
$ npm install --global tw-cli
Usage
$ typewriter src
✔ Converted src/index.ts -> src/index.js
✔ Converted src/App.tsx -> src/App.jsx
Codemods Included
- [x] Rename files from
.ts
->.js
&.tsx
->.jsx
a.ts -> a.js
a.tsx -> a.jsx
- [x] Add flow keyword quote (
// @flow
)
"content" -> "// @flow\ncontent"
- [x] Remove
public
andprivate
keywords
"public render()" -> "render()"
- [x]
interface
->type
"interface Prop {}" -> "type Prop = {}"
- [x] Type imports
- ensure your types are in
types
,types/*
,interface/*
, orinterfaces/*
// imports from types change
// "import {Prop} from './types'" -> "import type {Prop} from './types'"
// imports from everywhere else are left alone
// "import {NotProp} from './not-types'" -> "import {NotProp} from './not-types'"
- [x] Remove
readonly
Before:
{
readonly color: string
}
After:
{
color: string
}
- [x]
JSX.Element
->React.Node
In prop typings for TypeScript, a react element is called JSX.Element
while in Flow this is React.Node
.
Before:
{
element: JSX.Element;
}
After:
{
element: React.Node;
}
More Help
$ typewriter --help
TypeScript -> Flow Converter
Usage
$ typewriter <path|glob> [...]
Examples
$ typewriter index.ts
✔ Converted index.ts -> index.js
$ typewriter src
✔ Converted src/index.ts -> src/index.js
✔ Converted src/App.tsx -> src/App.jsx
# ignore node_modules
$ typewriter * '!node_modules/*'
✔ Converted src/index.ts -> src/index.js
✔ Converted src/App.tsx -> src/App.jsx
✔ Converted index.ts -> index.js
Support Development
The work done for this project is free. If you save time with TypeWriter, consider making a donation.
Are Bitcoin (BTC) donations more your style?
14xAeqDucUpRZkSDQrHCXaKsWmNPeqaB5q
License
MIT © Dawson Botsford