Home / Function/ writeConfig() — react Function Reference

writeConfig() — react Function Reference

Architecture documentation for the writeConfig() function in createFlowConfigs.js from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  a6bf12e5_9e65_9a63_3833_a10afa833d8f["writeConfig()"]
  58d7564a_60ca_fe34_fb9c_a10335b3f9f8["createFlowConfigs.js"]
  a6bf12e5_9e65_9a63_3833_a10afa833d8f -->|defined in| 58d7564a_60ca_fe34_fb9c_a10335b3f9f8
  07fb6643_c59b_953c_9585_53a1158ee784["addFork()"]
  a6bf12e5_9e65_9a63_3833_a10afa833d8f -->|calls| 07fb6643_c59b_953c_9585_53a1158ee784
  style a6bf12e5_9e65_9a63_3833_a10afa833d8f fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

scripts/flow/createFlowConfigs.js lines 55–139

function writeConfig(
  renderer,
  rendererInfo,
  isServerSupported,
  isFlightSupported,
) {
  const folder = __dirname + '/' + renderer;
  mkdirp.sync(folder);

  isFlightSupported =
    isFlightSupported === true ||
    (isServerSupported && isFlightSupported !== false);

  const serverRenderer = isServerSupported ? renderer : 'custom';
  const flightRenderer = isFlightSupported ? renderer : 'custom';

  const ignoredPaths = [];

  inlinedHostConfigs.forEach(otherRenderer => {
    if (otherRenderer === rendererInfo) {
      return;
    }
    otherRenderer.paths.forEach(otherPath => {
      if (rendererInfo.paths.indexOf(otherPath) !== -1) {
        return;
      }
      ignoredPaths.push(`.*/packages/${otherPath}`);
    });
  });

  const forks = new Map();
  addFork(forks, renderer, 'react-reconciler/src/ReactFiberConfig');
  addFork(forks, serverRenderer, 'react-server/src/ReactServerStreamConfig');
  addFork(forks, serverRenderer, 'react-server/src/ReactFizzConfig');
  addFork(forks, flightRenderer, 'react-server/src/ReactFlightServerConfig');
  addFork(forks, flightRenderer, 'react-client/src/ReactFlightClientConfig');
  forks.set(
    'react-devtools-shared/src/config/DevToolsFeatureFlags.default',
    'react-devtools-feature-flags',
  );

  allForks.forEach(fork => {
    if (!forks.has(fork)) {
      ignoredPaths.push(`.*/packages/.*/${fork}`);
    }
  });

  let moduleMappings = '';
  forks.forEach((source, target) => {
    moduleMappings += `module.name_mapper='${source.slice(
      source.lastIndexOf('/') + 1,
    )}' -> '${target}'\n`;
  });

  const config = configTemplate
    .replace('%REACT_RENDERER_FLOW_OPTIONS%', moduleMappings.trim())
    .replace('%REACT_RENDERER_FLOW_IGNORES%', ignoredPaths.join('\n'))
    .replace('%FLOW_VERSION%', flowVersion);

  const disclaimer = `
# ---------------------------------------------------------------#
# NOTE: this file is generated.                                  #
# If you want to edit it, open ./scripts/flow/config/flowconfig. #
# Then run Yarn for changes to take effect.                      #
# ---------------------------------------------------------------#
  `.trim();

  const configFile = folder + '/.flowconfig';
  let oldConfig;
  try {
    oldConfig = fs.readFileSync(configFile).toString();
  } catch (err) {
    oldConfig = null;
  }
  const newConfig = `
${disclaimer}
${config}
${disclaimer}
`.trim();

  if (newConfig !== oldConfig) {

Domain

Subdomains

Calls

Frequently Asked Questions

What does writeConfig() do?
writeConfig() is a function in the react codebase, defined in scripts/flow/createFlowConfigs.js.
Where is writeConfig() defined?
writeConfig() is defined in scripts/flow/createFlowConfigs.js at line 55.
What does writeConfig() call?
writeConfig() calls 1 function(s): addFork.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free