UNPKG

react-native-builder-bob

Version:

CLI to build JavaScript files for React Native libraries

60 lines (59 loc) 3.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = build; var _kleur = _interopRequireDefault(require("kleur")); var _patchCodegenAndroidPackage = require("./patches/patchCodegenAndroidPackage"); var _fsExtra = _interopRequireDefault(require("fs-extra")); var _path = _interopRequireDefault(require("path")); var _del = _interopRequireDefault(require("del")); var _removeCodegenAppLevelCode = require("./patches/removeCodegenAppLevelCode"); var _spawn = require("../../utils/spawn"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } async function build({ root, report }) { const packageJsonPath = _path.default.resolve(root, 'package.json'); const packageJson = await _fsExtra.default.readJson(packageJsonPath); const codegenIosPath = packageJson.codegenConfig?.outputDir?.ios; if (codegenIosPath != null) { report.info(`Cleaning up previous iOS codegen native code at ${_kleur.default.blue(_path.default.relative(root, codegenIosPath))}`); await (0, _del.default)([codegenIosPath]); } const codegenAndroidPath = packageJson.codegenConfig?.outputDir?.android; if (codegenAndroidPath != null) { report.info(`Cleaning up previous Android codegen native code at ${_kleur.default.blue(_path.default.relative(root, codegenAndroidPath))}`); await (0, _del.default)([codegenAndroidPath]); } const codegenType = packageJson.codegenConfig?.type; if (codegenType === undefined) { throw new Error("Couldn't find the 'type' value in 'codegenConfig'. Please check your package.json's 'codegenConfig' property and make sure 'type' is defined. https://reactnative.dev/docs/the-new-architecture/using-codegen#configuring-codegen"); } try { const codegenCLISupportsSource = await (0, _removeCodegenAppLevelCode.getCodegenCLISourceSupport)(); await (0, _spawn.spawn)('npx', ['@react-native-community/cli', 'codegen', ...(codegenCLISupportsSource ? ['--source', 'library'] : [])]); if (codegenType === 'modules' || codegenType === 'all') { await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(root, packageJson, report); } if (!codegenCLISupportsSource) { await (0, _removeCodegenAppLevelCode.removeCodegenAppLevelCode)(root, packageJson); } report.success('Generated native code with codegen'); } catch (e) { if (e != null && typeof e === 'object') { if ('stdout' in e && e.stdout != null) { report.error(`Errors found while running codegen:\n\n${e.stdout.toString()}`); } else if ('message' in e && typeof e.message === 'string') { if (e.message.includes("Error: Cannot find module '@react-native-community/cli/package.json'")) { report.error("You don't have `@react-native-community/cli` in your root package's dev dependencies. Please install it and make sure it uses the same version as your application."); } } } throw new Error('Failed to run codegen.', { cause: e }); } } //# sourceMappingURL=index.js.map