【问题标题】:Keep Flow types post webpack build保持流类型发布 webpack 构建
【发布时间】:2018-01-23 18:04:24
【问题描述】:

我想将 Flow 添加到我正在处理的当前项目中。一切都很好。但是,我找不到以某种方式在构建后保留类型的方法。我正在使用 monorepo 结构,并且我有很多 NPM 模块。如果模块更改其接口或导出的函数/类/类型更改,我想得到一个错误。

非常欢迎任何想法/指导!

谢谢!

【问题讨论】:

  • 不开启transform-flow-strip-typesbabel插件是不是不行?
  • 就像插件的描述从你的输出代码中去掉所有流类型注释和声明。我不想那样。当有人使用我的模块并且他/她也集成了流时,我想保留这些类型。
  • 您能否澄清一下,您是否在发布之前将每个单独的模块捆绑在您的 monorepo 中?通常由于只有模块的最终用户在捆绑,所以不会以同样的方式引入问题。
  • @AndreiCACIO 我说如果你启用该插件。啊但是你的问题是 webpack 使用的任何解析器都不支持流语法?
  • @CameronMartin 很抱歉造成误解。是的,我无法禁用该插件,因为在构建之后我需要一个可运行的 JS 包。

标签: javascript webpack flowtype


【解决方案1】:

如果您坚持让其他人包含您编译的包而不是源文件,则需要包含一个提供所有外部类型接口的.js.flow 文件。 Here's the interface file for Immutable.js as an example.

除非您的库具有某种需要分发其编译资产的构建复杂性,否则我只会依赖您的库的使用者自行编译和剥离类型。

【讨论】:

    【解决方案2】:

    Webpack 将 JS 文件捆绑到单个输出文件中,它无法在输出包中保留 Flow 类型。

    如果您想保留 Flow 逻辑以供 此捆绑包一起使用,当前的最佳做法是将您的原始源代码包含为 .js.flow 文件。 This blog post 详细说明了这种方法,但简短的版本是,您将使用 flow-copy-source 输出一堆与您的原始源代码匹配的 .js.flow 文件。

    【讨论】:

      猜你喜欢
      • 2017-01-30
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 2019-03-18
      • 2019-06-07
      • 2018-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多