Files
react-native/scripts/build/config.js
T
Blake Friedman 9d1f951ab0 remove from build script (#44233)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44233

The package was added to our build scripts, but shouldn't have been.  We're not exporting this package or making it public.

Changelog: [Internal]

This should unblock our OSS CI.

Reviewed By: cipolleschi

Differential Revision: D56513694

fbshipit-source-id: f37c75871253b2570fb933175165d8f0a9593a16
2024-04-24 03:53:34 -07:00

109 lines
2.4 KiB
JavaScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
* @oncall react_native
*/
/*::
import type {BabelCoreOptions} from '@babel/core';
*/
const {ModuleResolutionKind} = require('typescript');
/*::
export type BuildOptions = $ReadOnly<{
// The target runtime to compile for.
target: 'node',
// Whether to emit Flow definition files (.js.flow) (default: true).
emitFlowDefs?: boolean,
// Whether to emit TypeScript definition files (.d.ts) (default: false).
emitTypeScriptDefs?: boolean,
}>;
export type BuildConfig = $ReadOnly<{
// The packages to include for build and their build options.
packages: $ReadOnly<{[packageName: string]: BuildOptions}>,
}>;
*/
/**
* - BUILD CONFIG -
*
* Add packages here to configure them as part of the monorepo `yarn build`
* setup. These must use a consistent package structure and (today) target
* Node.js packages only.
*/
const buildConfig /*: BuildConfig */ = {
/* eslint sort-keys: "error" */
packages: {
'community-cli-plugin': {
target: 'node',
},
'core-cli-utils': {
emitTypeScriptDefs: true,
target: 'node',
},
'dev-middleware': {
emitTypeScriptDefs: true,
target: 'node',
},
'metro-config': {
emitTypeScriptDefs: true,
target: 'node',
},
},
};
const defaultBuildOptions = {
emitFlowDefs: true,
emitTypeScriptDefs: false,
};
function getBuildOptions(
packageName /*: $Keys<BuildConfig['packages']> */,
) /*: Required<BuildOptions> */ {
return {
...defaultBuildOptions,
...buildConfig.packages[packageName],
};
}
function getBabelConfig(
packageName /*: $Keys<BuildConfig['packages']> */,
) /*: BabelCoreOptions */ {
const {target} = getBuildOptions(packageName);
switch (target) {
case 'node':
return require('./babel/node.config.js');
}
}
function getTypeScriptCompilerOptions(
packageName /*: $Keys<BuildConfig['packages']> */,
) /*: Object */ {
const {target} = getBuildOptions(packageName);
switch (target) {
case 'node':
return {
...require('@tsconfig/node18/tsconfig.json').compilerOptions,
moduleResolution: ModuleResolutionKind.NodeJs,
};
}
}
module.exports = {
buildConfig,
getBabelConfig,
getBuildOptions,
getTypeScriptCompilerOptions,
};