2017-03-15 106 views
2

我正在使用create-react-app处理项目,并想将流程添加到我的流程中。 official documentation解释了如何做到这一点,它是相对简单的,但按照他们的指示,它将它与内置的linting/building/compilation一起添加到应用程序中。基于我的理解,任何时候我保存或更改我的应用程序代码时,ESLint都会对我的代码运行样式检查,Babel正在将ES6转换为ES5 JavaScript,并且我的JSX正在转换为JS。我只想将Flow类型检查添加到该进程。将流程添加到create-react-app项目的编译步骤

如何配置create-react-app将Flow编译添加到其标准构建过程,以便我不必从命令行单独运行它?

回答

1

一个选项是eject该应用程序并自定义配置。另一种选择是分叉react-scripts并构建一个定制版本,它将在构建过程中添加flow检查。

2

虽然create-react-app确实公开了一些钩子,但他们有repeatedly refused请求允许用户定制/覆盖/合并webpack配置。从这个意义上说,“标准构建”的核心在很大程度上是不可定制的。

因此,我不认为有一种方法可以将流插件真正带入webpack,而不会弹出或骇入react-scripts。也就是说,如果您主要在代码中查找即时反馈,那么您可以从IDE获得此信息,而不涉及create-react-app的构建。例如,具有Flow扩展的VSCode可以为您提供这种类型的开发体验。当你做出改变,你没有运行在命令行任何事都要标记流量的错误:

Flow error in VSCode

在命令行建设(例如,在CI环境),你能做些什么像:

"scripts": { 
    "start": "react-scripts start", 
    "build": "flow && react-scripts build", 
    "test": "react-scripts test --env=jsdom", 
    "eject": "react-scripts eject", 
    "flow": "flow" 
} 

这是不可否认仍然分别在命令行中运行的流程,但至少它可以确保流运行,并生成将失败的任何流量的错误,即使你只运行npm run buildyarn build

一些其他类似项目支持webpack配置的合并。 create-react-applists some of these alternatives in their README