From 07bedae4af3ba56278a5a4bc33330b65164ea976 Mon Sep 17 00:00:00 2001 From: Sebastian Markbage Date: Tue, 10 Sep 2019 11:18:26 -0700 Subject: [PATCH] Exclude react-dom when flow checking other builds This is because the HostConfig can't be guaranteed to be consistent with other code such as code that touches the DOM directly. Ideally we'd have a more systemic solution to this since it will pop up for other packages later too. --- scripts/flow/config/flowconfig | 2 ++ scripts/flow/createFlowConfigs.js | 21 +++++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/scripts/flow/config/flowconfig b/scripts/flow/config/flowconfig index 99cd2da34e0a..22f1033e5924 100644 --- a/scripts/flow/config/flowconfig +++ b/scripts/flow/config/flowconfig @@ -13,6 +13,8 @@ .*/__mocks__/.* .*/__tests__/.* +%REACT_RENDERER_FLOW_IGNORES% + [include] ../../../node_modules/ ../../../packages/ diff --git a/scripts/flow/createFlowConfigs.js b/scripts/flow/createFlowConfigs.js index f1ca3523c77d..2fab449a04e9 100644 --- a/scripts/flow/createFlowConfigs.js +++ b/scripts/flow/createFlowConfigs.js @@ -23,16 +23,29 @@ function writeConfig(renderer, isFizzSupported) { mkdirp.sync(folder); const fizzRenderer = isFizzSupported ? renderer : 'custom'; - const config = configTemplate.replace( - '%REACT_RENDERER_FLOW_OPTIONS%', - ` + const config = configTemplate + .replace( + '%REACT_RENDERER_FLOW_OPTIONS%', + ` module.name_mapper='react-reconciler/inline.${renderer}$$' -> 'react-reconciler/inline-typed' module.name_mapper='ReactFiberHostConfig$$' -> 'forks/ReactFiberHostConfig.${renderer}' module.name_mapper='react-stream/inline.${renderer}$$' -> 'react-stream/inline-typed' module.name_mapper='ReactFizzHostConfig$$' -> 'forks/ReactFizzHostConfig.${fizzRenderer}' module.name_mapper='ReactFizzFormatConfig$$' -> 'forks/ReactFizzFormatConfig.${fizzRenderer}' `.trim(), - ); + ) + .replace( + '%REACT_RENDERER_FLOW_IGNORES%', + renderer === 'dom' || renderer === 'dom-browser' + ? '' + : // If we're not checking DOM, ignore the DOM package since it + // won't be consistent. + ` + .*/packages/react-dom/.* + .*/packages/.*/forks/.*.dom.js + .*/packages/.*/forks/.*.dom-browser.js + `.trim(), + ); const disclaimer = ` # ---------------------------------------------------------------#