SwaggerEditor 使用 forked Create React App 作为其构建基础结构。
入门
先决条件
安装 SwaggerEditor 作为 npm 包和本地开发设置都需要满足这些先决条件。
安装
假设 先决条件 已安装,SwaggerEditor npm 包是可安装的,并且适用于 Node.js >= 12.22.0
。您可以通过运行以下命令通过 npm CLI 安装 SwaggerEditor
注意:当使用 bundler 构建使用 swagger-editor@5 npm 包的项目时,您可能会遇到以下 Node.js 错误:Reached heap limit Allocation failed - JavaScript heap out of memory
。这是由于需要捆绑的代码量很大造成的。可以通过扩展 Node.js 最大堆限制来解决此错误:export NODE_OPTIONS="--max_old_space_size=4096"
。
用法
在您的应用程序中使用该包
webpack.config.js (webpack@5)
安装 webpack@5 正确构建 SwaggerEditor 所需的依赖项。
替代的 webpack.config.js (webpack@5)
我们已经为您构建了 Web Workers 片段,它们位于 npm 发行包的 dist/umd/
目录中。为了避免构建 Web Worker 片段的复杂性,您可以直接使用这些片段。此设置适用于生产和开发 (webpack-dev-server),并将显着缩短您的构建过程。
安装 copy-webpack-plugin
和其他需要的依赖项。
开发
先决条件
假设 先决条件 已安装,Node.js >=20.3.0
和 npm >=9.6.7
是此 repo 运行所需的最低版本,但我们建议使用最新版本的 Node.js@20。
设置
如果您使用 nvm,在此存储库中运行以下命令将自动为您选择正确的 Node.js 版本
运行以下命令以设置存储库以进行本地开发
npm 脚本
Lint
运行单元和集成测试
运行 E2E Cypress 测试
在开发环境中使用
在持续集成 (CI) 环境中使用
构建
此脚本将构建所有 SwaggerEditor 构建产物 - app
、esm
和 umd
。
构建产物
构建产物后,将创建两个新目录:build/
和 dist/
。
build/
构建并提供独立的 SwaggerEditor 应用程序及其所有资产,地址为 https://127.0.0.1:3050/
。
dist/esm/
此捆绑包适合希望在其自己的应用程序中将 SwaggerEditor 用作库并拥有自己的构建过程的第三方使用。
dist/umd/
SwaggerEditor UMD 捆绑包在全局对象上导出 SwaggerEditor 符号。它与定义为外部的 React 捆绑在一起。这允许使用者使用他自己的 React + ReactDOM 版本并延迟挂载 SwaggerEditor。
npm
SwaggerEditor 在 npmjs.com 上以 swagger-editor@5
npm 包的形式发布。也可以通过运行以下命令手动生成包(假设您已经按照 设置 步骤操作)
包映射
SwaggerEditor 以以下方式在 package.json
文件中映射其构建产物
要了解有关这些字段的更多信息,请参阅 webpack mainFields 文档或 Node.js 模块:包文档。
文档
使用旧版本的 React
[!IMPORTANT] 旧版本我们特指 React >=17 <18
。
默认情况下,swagger-editor@5 npm 包带有最新版本的 React@18。可以使用旧版本的 React 使用 swagger-editor@5 npm 包。
假设我的应用程序与 swagger-editor@5 npm 包集成并使用 [email protected]。
npm
为了通知 swagger-editor@5
npm 包我需要它使用我的 React 版本,我需要使用 npm overrides。
[!NOTE] React 和 ReactDOM 覆盖被定义为对依赖项的引用。由于 react-redux@9 仅支持 React >= 18
,因此我们需要使用 react-redux@8。
yarn
为了通知 swagger-editor@5
npm 包我需要它使用我的特定 React 版本,我需要使用 yarn resolutions。
[!NOTE] React 和 ReactDOM 解析不能定义为对依赖项的引用。不幸的是,yarn 不支持像 npm 那样使用 $react
或 $react-dom
别名。您需要指定确切的版本。
自定义
环境变量
可以使用环境变量来指定本地 JSON/YAML 文件或远程 URL,以便 SwaggerEditor 在启动时加载。这些环境变量将在构建时烘焙到构建产物中。
当前可用的环境变量
变量名 | 描述 |
---|
REACT_APP_DEFINITION_FILE | 指定本地文件路径,指定的文件还必须存在于 /public/static 目录中 |
REACT_APP_DEFINITION_URL | 指定远程 URL。此环境变量当前优先于 REACT_APP_SWAGGER_FILE |
REACT_APP_VERSION | 指定此应用程序的版本。版本是从 package.json 文件读取的。 |
示例环境变量值可以在 .env
文件中找到。有关使用环境变量的更多信息,请参阅 Create React App 文档的 添加自定义环境变量 部分。
在 SwaggerUI 中使用预览插件
SwaggerEditor 自带一些 preview
插件,这些插件负责渲染在编辑器中创建的定义。这些插件包括
- EditorPreviewAsyncAPIPlugin - AsyncAPI 规范渲染支持
- EditorPreviewAPIDesignSystemsPlugin - API 设计系统渲染支持
稍作调整,我们可以将这些插件与 SwaggerUI 结合使用,从而提供使用 SwaggerUI 渲染 AsyncAPI 或 API 设计系统定义的能力。
这里的关键是 SwaggerUIAdapter
插件,它使 SwaggerEditor 插件可以直接与 SwaggerUI 一起使用。
独立模式
SwaggerUI 也支持独立模式。在独立模式下,您将获得一个 TopBar
,其中包含一个输入框,您可以在其中提供定义的 URL,然后 SwaggerUI 会加载该定义。
可以通过 unpkg.com 以无需构建的方式利用预览插件,从而创建支持多种规范的 SwaggerUI 独立版本。
组合自定义的 SwaggerEditor 版本
SwaggerEditor 只是与 swagger-ui-react 一起使用的一些 SwaggerUI 插件。可以通过将单个插件与 swagger-ui 和 swagger-ui-react 组合来创建自定义的 SwaggerEditor。
插件
可用插件列表
- dialogs
- dropdown-menu
- dropzone
- editor-content-fixtures
- editor-content-origin
- editor-content-persistence
- editor-content-read-only
- editor-content-type
- editor-monaco
- editor-monaco-language-apidom
- editor-preview
- editor-preview-api-design-systems
- editor-preview-asyncapi
- editor-preview-swagger-ui
- editor-safe-render
- editor-textarea
- layout
- modals
- splash-screen
- swagger-ui-adapter
- top-bar
- versions
可以通过以下方式导入单个插件
预设
除了插件之外,还可以使用预设。预设是旨在协同工作以提供复合功能的一组插件。
可用预设列表
可以通过以下方式导入单个预设
注意:请参考 SwaggerUI 的 插件点文档,以了解预设如何传递给 SwaggerUI。
与 swagger-ui 组合
与 swagger-ui-react 组合
Docker
预构建的 DockerHub 镜像
SwaggerEditor 可作为托管在 DockerHub 上的预构建 Docker 镜像使用。
本地构建
特权镜像:
现在,在您的浏览器中打开 https://127.0.0.1:8080/
。
非特权镜像:
现在,在您的浏览器中打开 https://127.0.0.1:8080/
。
SwaggerEditor 当前不支持自定义环境变量。
许可证
SwaggerEditor 基于 Apache 2.0 许可证 授权。SwaggerEditor 附带一个明确的 NOTICE 文件,其中包含其他法律声明和信息。
此项目使用 REUSE 规范,该规范定义了一种用于声明软件项目版权和许可的标准化方法。
软件物料清单 (SBOM)
软件物料清单在此存储库的 依赖关系图 中提供。单击 Export SBOM
按钮以下载 SPDX 格式 的 SBOM。