Redocly CLI (fka OpenAPI CLI) toolbox with rich validation and bundling features.
Currently, @redocly/cli supports these features:
- Multi-file validation. No need to bundle your file before validation.
- Lightning-fast validation. Lint a 1 MB file in less than one second.
- Built-in rules for common validations.
- Configurable severity levels for each rule.
- Human-readable error messages with codeframes and stylish format options.
- Intuitive suggestions for misspelled types or references.
- Easy to implement custom rules.
- Bundle a multi-file definition into a single file.
- Decorators to modify a validated definition during bundling.
- Preview docs for local development.
- Support for OpenAPI 2 (fka Swagger) and OpenAPI 3.0.
- Basic support for OpenAPI 3.1
- 💨 It's faster (uses a type tree similar to how linters for programming languages work)
- 🎯 It's more accurate (working with types is more accurate than working with JSON path)
- ⚙️ It's highly configurable (comes with a lot of commands and rules)
- 🛠️ It's more extensible (architected for custom plugins and types)
npx @redocly/cli lint path-to-root-file.yaml
Alternatively, install it globally with npm
:
npm install @redocly/cli -g
Then you can use it as redocly [command] [options]
, for example:
redocly lint path-to-root-file.yaml
To give the Docker container access to the OpenAPI definition files, you need to mount the containing directory as a volume. Assuming the OAS definition is rooted in the current working directory, you need the following command:
docker run --rm -v $PWD:/spec redocly/cli lint path-to-root-file.yaml
To build and run with a local image, run the following from the project root:
docker build -t redocly/cli .
docker run --rm -v $PWD:/spec redocly/cli lint path-to-root-file.yaml
Thanks to graphql-js and eslint for inspiration of the definition traversal approach and to Swagger, Spectral, and OAS-Kit for inspiring the ruleset.
See CONTRIBUTING.md