UNPKG

react-native-builder-bob

Version:

CLI to build JavaScript files for React Native libraries

141 lines (140 loc) 4.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.args = void 0; exports.build = build; var _arktype = require("arktype"); var _fsExtra = _interopRequireDefault(require("fs-extra")); var _kleur = _interopRequireDefault(require("kleur")); var _path = _interopRequireDefault(require("path")); var _schema = require("./schema"); var _loadConfig = require("./utils/loadConfig"); var logger = _interopRequireWildcard(require("./utils/logger")); var _workerize = require("./utils/workerize"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const args = exports.args = { target: { type: 'string', description: 'The target to build', choices: ['commonjs', 'module', 'typescript', 'codegen'] } }; async function build(argv) { const root = process.cwd(); const projectPackagePath = _path.default.resolve(root, 'package.json'); if (!(await _fsExtra.default.pathExists(projectPackagePath))) { throw new Error(`Couldn't find a 'package.json' file in '${root}'. Are you in a project folder?`); } const result = (0, _loadConfig.loadConfig)(root); if (!result?.config) { throw new Error(`No configuration found. Run '${argv.$0} init' to create one automatically.`); } const parsed = (0, _schema.config)(result.config); if (parsed instanceof _arktype.type.errors) { throw new Error(`Invalid configuration in ${result.filepath}: ${parsed.summary}`); } const { source, output, targets, exclude } = parsed; const commonjs = targets.some(t => Array.isArray(t) ? t[0] === 'commonjs' : t === 'commonjs'); const module = targets.some(t => Array.isArray(t) ? t[0] === 'module' : t === 'module'); const variants = { commonjs, module }; if (argv.target != null) { await buildTarget({ root, target: argv.target, source, output, exclude, config: parsed, variants }); } else { await Promise.all(targets.map(async target => buildTarget({ root, target: Array.isArray(target) ? target[0] : target, source, output, exclude, config: parsed, variants }))); } } async function buildTarget({ root, target, source, output, exclude, config, variants }) { const options = config.targets.map(t => Array.isArray(t) ? t : [t, undefined]).find(t => t[0] === target)?.[1]; const report = logger.grouped(target); switch (target) { case 'commonjs': case 'module': await (0, _workerize.run)(target, { root, source: _path.default.resolve(root, source), output: _path.default.resolve(root, output, target), exclude, // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion options: options, variants, report }); break; case 'typescript': { const esm = config.targets?.some(t => { if (Array.isArray(t)) { const [name, options] = t; if (name === 'module') { return options && 'esm' in options && options?.esm; } } return false; }) ?? false; await (0, _workerize.run)('typescript', { root, source: _path.default.resolve(root, source), output: _path.default.resolve(root, output, 'typescript'), // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion options: options, esm, variants, report }); } break; case 'codegen': await (0, _workerize.run)('codegen', { root, source: _path.default.resolve(root, source), report }); break; case 'custom': await (0, _workerize.run)('custom', { root, source: _path.default.resolve(root, source), // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion options: options, report }); break; default: throw new Error(`Invalid target ${_kleur.default.blue(target)}.`); } } //# sourceMappingURL=build.js.map