UNPKG

@redocly/cli

Version:

[@Redocly](https://redocly.com) CLI is your all-in-one OpenAPI utility. It builds, manages, improves, and quality-checks your OpenAPI descriptions, all of which comes in handy for various phases of the API Lifecycle. Create your own rulesets to make API g

38 lines • 1.92 kB
import { createRequire } from 'node:module'; import { dirname, resolve } from 'node:path'; import { writeFileSync, mkdirSync } from 'node:fs'; import { default as redoc } from 'redoc'; import { performance } from 'node:perf_hooks'; import { isAbsoluteUrl, logger } from '@redocly/openapi-core'; import { getObjectOrJSON, getPageHTML } from './utils.js'; import { getExecutionTime, getFallbackApisOrExit } from '../../utils/miscellaneous.js'; import { exitWithError } from '../../utils/error.js'; const packageJson = createRequire(import.meta.url ?? __dirname)('../../../package.json'); export const handlerBuildCommand = async ({ argv, config, collectSpecData, }) => { const startedAt = performance.now(); const apis = await getFallbackApisOrExit(argv.api ? [argv.api] : [], config); const { path: pathToApi, alias } = apis[0]; const options = { output: argv.o, title: argv.title, disableGoogleFont: argv.disableGoogleFont, templateFileName: argv.template, templateOptions: argv.templateOptions || {}, redocOptions: getObjectOrJSON(argv.theme?.openapi, config.forAlias(alias)), }; const redocCurrentVersion = packageJson.dependencies.redoc; try { const elapsed = getExecutionTime(startedAt); const api = await redoc.loadAndBundleSpec(isAbsoluteUrl(pathToApi) ? pathToApi : resolve(pathToApi)); collectSpecData?.(api); const pageHTML = await getPageHTML(api, pathToApi, { ...options, redocCurrentVersion }, argv.config); mkdirSync(dirname(options.output), { recursive: true }); writeFileSync(options.output, pageHTML); const sizeInKiB = Math.ceil(Buffer.byteLength(pageHTML) / 1024); logger.info(`\nšŸŽ‰ bundled successfully in: ${options.output} (${sizeInKiB} KiB) [ā± ${elapsed}].\n`); } catch (e) { exitWithError(e); } }; //# sourceMappingURL=index.js.map