2017-04-05 66 views
5

我正在使用Flow來幫助編寫一個JS項目。如果我想提供一個libdef file來補充它,我是否需要手動創建它,還是我能夠執行一些我還沒有意識到的魔術命令,它會爲我生成lib def?Flow-typed - 生成Libdef

$ flow-typed doyourmagic會很好。

編輯:

發現這個https://stackoverflow.com/a/38906578/192999

它說:

有兩件事情:

如果該文件是由你擁有的(即不是第三方內node_modules LIB或者類似),那麼你可以在它旁邊創建一個* .js.flow文件來記錄它的輸出。

如果文件不歸您所有(即第三方的lib內node_modules或這樣),那麼你就可以創建內部流類型/名稱的-library.js

一個libdef文件的.js。流文件 你寫的定義是這樣的:

// @flow 
declare module.exports: { ... } 

對於libdef文件你寫的定義是這樣的:

declare module "my-third-party-library" { declare module.exports: {... } } 

對於我的問題,我陷入「被你擁有」的陣營。

我想我很困惑,:

  1. 我怎麼寫這些文件。
  2. 如何/在哪裏發佈這些文件以便將其打包以供其他項目參考。

此外,爲什麼我需要手動創建.js.flow文件?難道這不會神奇地產生?也許這就是前進的意圖,但尚未實現。

回答

1

我發現了一個不錯的guide,顯示瞭如何將流代碼與編譯代碼一起打包。因此:

  1. 您不必編寫自己的libdefs,就可以使用整個流源代碼。如果你只需要一個類型聲明的定義,你可以看看flow gen-flow-files,儘管這仍然是實驗性的,可能會失敗。
  2. 您可以將它們打包爲*.js.flow,當您導入庫時,流程檢查器會自動選擇這些。
+1

但是,如果您有捆綁軟件包,您會怎麼做?我彙總代碼以使需求更快(1箇中等大小的文件與300個小文件),但是然後將源文件複製爲* .js.flow將不起作用,因爲不再有相應的* .js文件,或者會嗎? –