feat: Support options from .redocly.yaml in cli

This commit is contained in:
anastasiia-developer 2022-05-05 11:46:30 +03:00
parent 186f5a98bd
commit 9698972082
5 changed files with 55 additions and 1 deletions

1
.gitignore vendored
View File

@ -28,6 +28,7 @@ bundles/
typings/*
!typings/styled-patch.d.ts
cli/index.js
cli/__test__/*/**/redoc-static.html
/benchmark/revisions

View File

@ -0,0 +1,2 @@
features.openapi:
disableSearch: true

View File

@ -0,0 +1,34 @@
import { spawnSync } from 'child_process';
describe('build', () => {
it('should use .redocly.yaml', () => {
const r = spawnSync('node', ['../../../index.js', 'build', ' ../../../../demo/openapi.yaml'], {
cwd: __dirname,
shell: true,
});
const out = r.stdout.toString('utf-8');
expect(out).toContain('Found .redocly.yaml and use option from features.openapi');
expect(out).toContain('bundled successfully');
});
it('should use inline options and ignore .redocly.yaml', () => {
const r = spawnSync(
'node',
[
'../../../index.js',
'build',
' ../../../../demo/openapi.yaml',
'--options.disableSearch=true',
],
{
cwd: __dirname,
shell: true,
},
);
const out = r.stdout.toString('utf-8');
expect(out).not.toContain('Found .redocly.yaml and use option from features.openapi');
expect(out).toContain('bundled successfully');
});
});

View File

@ -25,6 +25,12 @@ import {
import * as mkdirp from 'mkdirp';
import * as YargsParser from 'yargs';
// eslint-disable-next-line import/no-extraneous-dependencies
import { findConfig } from '@redocly/openapi-core';
// eslint-disable-next-line import/no-extraneous-dependencies
import { parseYaml } from '@redocly/openapi-core';
// eslint-disable-next-line import/no-extraneous-dependencies
import { Config } from '@redocly/openapi-core';
interface Options {
ssr?: boolean;
@ -447,6 +453,17 @@ function getObjectOrJSON(options) {
handleError(e);
}
default:
const configFile = findConfig();
if (configFile) {
console.log(`Found ${configFile} and use option from features.openapi`);
try {
const config = parseYaml(readFileSync(configFile, 'utf-8')) as Config;
return config['features.openapi'];
} catch (e) {
console.warn(`Found ${configFile} but failed to parse: ${e.message}`);
}
}
return {};
}
}

View File

@ -43,7 +43,7 @@
"bundle:standalone": "webpack --env production --env standalone --mode=production",
"bundle:lib": "webpack --mode=production && npm run declarations",
"bundle:browser": "webpack --env production --env browser --mode=production",
"bundle": "npm run bundle:clean && npm run bundle:lib && npm run bundle:browser && npm run bundle:standalone",
"bundle": "npm run bundle:clean && npm run bundle:lib && npm run bundle:browser && npm run bundle:standalone && npm run compile:cli",
"declarations": "tsc --emitDeclarationOnly -p tsconfig.lib.json && cp -R src/types typings/",
"stats": "webpack --env production --env standalone --json --profile --mode=production > stats.json",
"prettier": "prettier --write \"cli/index.ts\" \"src/**/*.{ts,tsx}\"",