2016-04-06 17 views
1

私はいくつかのビジネスロジックをいくつかのjsアプリケーションで消費する共有npmパッケージを持っています。 srcにes6 +フローソースファイルがあり、libにビルドされたバニラjsファイルがあり、パッケージのメインはlib/index.jsに設定され、表示されるべきものをエクスポートします。Flowtype:型指定されたユーザーと型指定されていないユーザーの両方のパッケージですか?

フロータイプを使用してパッケージを書き直すのに数日間を費やしました。これによってコードの一部が完成し、いくつかの問題の検出に役立ちました。それは素晴らしい、タイプチェックを動作し、テストが合格します。 Babelはすべてのフロービットを削除して、パッケージを必要とするクライアントはまだjsでプレーンファイルを取得して正常に動作します。

しかし、私はこのパッケージのクライアントに(オプションで)関数の型シグニチャを取得し、呼び出しが正しくタイプされていることを確認します。 I は宣言ファイルを書くことができますが、型はすでに元のpre-babelソースコードに入っているので愚かなようです。同時に、一部のクライアントがフローやバベルを使用していない可能性があるため、そのソースを提供するだけではありません。そして、私はむしろ、正確なソースファイルのパスを知っているとrequire('my-package/src/the-piece-i-want')

に持つようになるタイプを望む人々を持っていないと思いますrequire('my-package')は単なるノードに対しての両方を動作するように流れを持つパッケージを書くための標準的な方法はありますユーザとbabel + flowユーザのタイプチェックも可能ですか?もしそうでなければ、この問題を抱えている他の人々は何ですか?

答えて

1

ありがとうございます! http://flowtype.org/blog/2015/12/01/Version-0.19.0.html#declaration-files

.js.flowの拡張子を持つファイルのコンパイル済みバージョンのすぐ隣に、元のソース(コンパイルされていない)のコピーを残しておいてください。

だから、のようなもの:

/package.json 
/src/index.js   <-- compiled version 
/src/index.js.flow  <-- original version 
/src/lib/myLib.js  <-- compiled 
/src/lib/myLib.js.flow <-- original 

Flowは、隣接する.jsのファイルと同じ名前を持つ.js.flowファイルを見つけると、それは後者をシャドウするために、元を使用します。

関連する問題