Removes Flow type annotations from JavaScript files with speed and simplicity.
Last updated 4 years ago by yyx990803 .
BSD-3-Clause · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install flow-remove-types-no-whitespace 
SYNC missed versions from official npm registry.


npm Build Status

Turn your JavaScript with Flow type annotations into standard JavaScript in an instant with no configuration and minimal setup.

Flow provides static type checking to JavaScript which can both help find and detect bugs long before code is deployed and can make code easier to read and more self-documenting. The Flow tool itself only reads and analyzes code. Running code with Flow type annotations requires first removing the annotations which are non-standard JavaScript. Typically this is done via adding a plugin to your Babel configuration, however Babel may be overkill if you're only targetting modern versions of Node.js or just not using the modern ES2015 features that may not be in every browser.

flow-remove-types is a faster, simpler, zero-configuration alternative with minimal dependencies for super-fast npm install time.

Get Started!

Use the command line:

npm install --global flow-remove-types
flow-remove-types --help
flow-remove-types input.js > output.js

Or the JavaScript API:

npm install flow-remove-types
var flowRemoveTypes = require('flow-remove-types');
var fs = require('fs');

var input = fs.readFileSync('input.js', 'utf8');
var output = flowRemoveTypes(input);
fs.writeFileSync('output.js', output);

Use in Build Systems:

Rollup: rollup-plugin-flow

Browserify: unflowify

Use flow-node

Wherever you use node you can substitute flow-node and have a super fast flow-types aware evaluator or REPL.

$ flow-node
> var x: number = 42
> x

Use the require hook

Using the require hook allows you to automatically compile files on the fly when requiring in node:


Dead-Simple Transforms

When flow-remove-types removes Flow types, it replaces them with whitespace. This ensures that the transformed output has exactly the same number of lines and characters and that all character offsets remain the same. This removes the need for sourcemaps, maintains legible output, and ensures that it is super easy to include flow-remove-types at any point in your existing build tools.

Built atop the excellent babylon parser, flow-remove-types shares the same parse rules as the source of truth as Flow Babel plugins. It also passes through other common non-standard syntax such as JSX and experimental ECMAScript proposals.


import SomeClass from 'some-module'
import type { SomeInterface } from 'some-module'

export class MyClass<T> extends SomeClass implements SomeInterface {

  value: T

  constructor(value: T) {
    this.value = value

  get(): T {
    return this.value



import SomeClass from 'some-module'

export class MyClass    extends SomeClass                          {

  constructor(value   ) {
    this.value = value

  get()    {
    return this.value




Installing via npm from an empty project:


time npm install flow-remove-types

real  0m3.193s
user  0m1.643s
sys   0m0.775s


time npm install babel-cli babel-plugin-transform-flow-strip-types

real  0m23.200s
user  0m10.395s
sys   0m4.238s


Transforming a directory of 20 files of 100 lines each:


time flow-remove-types src/ --out-dir dest/

real  0m0.431s
user  0m0.436s
sys   0m0.068s


time babel src/ --out-dir dest/

real  0m1.074s
user  0m1.092s
sys   0m0.149s

Current Tags

  • 1.0.5                                ...           latest (4 years ago)

3 Versions

  • 1.0.5                                ...           4 years ago
  • 1.0.4                                ...           4 years ago
  • 1.0.3                                ...           4 years ago
Maintainers (1)
Today 38
This Week 128
This Month 128
Last Day 31
Last Week 205
Last Month 942
Dependencies (2)
Dev Dependencies (0)

Copyright 2014 - 2016 © taobao.org |