Comments (2)
@uncaught there's one more possible option you can try to work around that: writing a custom decorator to remove duplicated components in the joined file. You may start with something like the following and improve is as you need:
module.exports = {
id: "my-local-plugin",
decorators: {
oas3: {
'remove-duplicated-schemas': () => {
const refs = {};
const schemasToDelete = [];
return {
ref: {
enter(ref, ctx) {
if (!ref.$ref.startsWith("#/components/schemas/")) {
// Ignore refs that are not pointing to a schema inside the current file
return;
}
const stringifiedSchema = JSON.stringify(ctx.resolve(ref).node);
if (refs[stringifiedSchema]) {
const [_, schemaName] = ref.$ref.split("#/components/schemas/");
schemasToDelete.push(schemaName);
ref.$ref = refs[stringifiedSchema];
} else {
refs[stringifiedSchema] = ref.$ref;
}
},
},
NamedSchemas: {
leave(namedSchemas) {
for (const schemaName of schemasToDelete) {
delete namedSchemas[schemaName];
}
},
},
};
},
},
},
};
The command then will look like this: redocly join RouteA.yml RouteB.yml --prefix-components-with-info-prop title -o joined.yaml && redocly bundle joined.yaml
.
from redocly-cli.
Thank you @uncaught for the feature request, we will certainly consider it. And thank you @tatomyr for adding the workaround that can be used with the current version of the tool - I'm sure this will help someone!
from redocly-cli.
Related Issues (20)
- Add some type of plugin to allow dynamic definition of extensions or config files HOT 2
- Support better means to set environment variables HOT 4
- dependentRequired is valid json schema but does not pass linting and prevents component from being available in UI. HOT 5
- Api HOT 2
- Add the `--ext` parameter to the `split` command HOT 1
- Running out of CPU inside of containers HOT 3
- join fails on commonly referenced components HOT 4
- Redocly removing string for enums if there's non-numbers mixed in HOT 3
- Ability to exclude some operations from security-defined rule HOT 4
- `remove-unused-components` removes used `securityDefinitions` from `Swagger 2.0` specifications HOT 1
- "join" remove extension properties under path property HOT 3
- Add `output` as a per-API configuration option
- Document behaviour of lint cli args after `--` HOT 3
- Configure object order for redocly bundle command HOT 2
- Unexpected theme/htmlTemplate config warnings in v1.15.0 HOT 5
- Redocly CLI Hangs When Running In A Container HOT 8
- HTML rendering broken / unusable when allOf and oneOf even if spec is considered 0 warning HOT 3
- Bundle command does not replace self-referencing files. HOT 3
- ContentSchema and bundling HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from redocly-cli.