使用流时忽略 node_modules
Posted
技术标签:
【中文标题】使用流时忽略 node_modules【英文标题】:Ignoring node_modules when using flow 【发布时间】:2017-08-12 20:28:29 【问题描述】:我在我的 React Native 应用程序中使用 flow
,flow 的初始启动非常慢,因为它正在遍历我的 node_modules
目录。 Flow 报告来自这些第三方库的大量错误,我无法修复。
我可以告诉 flow 忽略 node_modules
中的任何错误吗?我的配置文件中有这个:
[ignore]
.*/node_modules/.*
但是,流现在告诉抛出
react-native Required module not found
。奇怪的是,在导入 React 时并没有发现这个错误。
【问题讨论】:
【参考方案1】:您可以在项目根目录中创建一个名为 flow-typed
的文件夹,并在其中为您的模块创建声明文件。因此,在这种情况下,您将创建文件:
flow-typed/react-native.js
// @flow
declare module 'react-native'
/* declarations go here... */
React 在包含时不会抱怨的原因是,flow 带有开箱即用的声明 (https://github.com/facebook/flow/blob/master/lib/react.js),就像它带有 javascript 和浏览器标准库的声明一样。
警告,不过,编写这些声明文件并非易事。要获得灵感,请查看 Flow 附带的声明以及 https://github.com/flowtype/flow-typed 存储库中的声明。
【讨论】:
绝对正确!我使用flow-typed
为我的devDependencies
中的所有模块自动生成声明文件。但是,react-native 是 dependency
,所以我必须手动创建文件。
@Dan AFAIK react-native 带有流类型 - 也许您曾经/正在使用太新版本的流?我认为他们仍在 v0.40.0 上。
如果您不想手动编写声明存根,请使用流类型创建声明存根:flow-typed create-stub <library-name>
。
有没有办法告诉 flow 我想忽略 node_modules 中的库并且不提供任何流类型声明?我希望 flow 完全忽略该库,每当我与它交互时,flow 都可以认为它是有效的。我承担这个风险。能做到吗?以上是关于使用流时忽略 node_modules的主要内容,如果未能解决你的问题,请参考以下文章