GraphQL IDE Monorepo
安全提示: 所有版本
graphiql<1.4.7在 GraphiQL Web 应用连接的 GraphQL 服务器不可信的情况下,均存在 XSS 攻击漏洞。 了解更多 在 graphiqlsecurity文档目录中
正在寻找 GraphiQL 文档?:这是 monorepo 的根目录!完整的 GraphiQL 文档位于
packages/graphiql
概述
GraphiQL(发音类似“graphical”)是本 monorepo 的参考实现,一个 GraphQL IDE,也是 GraphQL 基金会下的官方项目。代码采用宽松的 MIT 许可证。
无论您是想为服务器搭建一个简单的 GraphiQL IDE 实例,还是为您的框架或插件提供更高级的 Web 或桌面 GraphQL IDE 体验,抑或是想构建 IDE 扩展或插件,您都来对地方了!
本 monorepo 旨在为 GraphQL 社区提供:
- 一个符合规范的官方语言服务(参见: API 文档)
- 一个用于 IDE 的综合 LSP 服务器和 CLI 服务
- 一个 codemirror 模式
- 一个 monaco 模式(开发中)
- 一个如何使用该生态系统与 GraphiQL 的示例。
- 如何实现或扩展 GraphiQL 的示例。
graphiql

/ˈɡrafək(ə)l/ 一个图形化的、可交互的浏览器内 GraphQL IDE。
试用实时演示。我们还有
一个使用我们最新 netlify 构建的演示,
对应 main 分支。
GraphiQL IDE,使用 React 实现,当前使用 CodeMirror 的 GraphQL 模式 和 GraphQL Language Service。
了解更多关于
GraphiQL in packages/graphiql/README.md
monaco-graphql
为 monaco editor 提供强大的、基于 schema 的 graphql 语言模式。
直接使用 graphql-language-service。
参见 webpack 示例,这是一个使用 GitHub API 的纯 javascript 演示
codemirror-graphql

为 CodeMirror 5 提供 GraphQL 解析模式,并配备由您的 GraphQL Schema 驱动的实时 linter 和 typeahead hinter。使用
graphql-language-service。
cm6-graphql
为 CodeMirror 6 提供功能完整的 GraphQL 语言模式。使用 graphql-language-service。
graphql-language-service
为
graphql-language-service-server
codemirror-graphql 和
monaco-graphql 提供语言服务。此前曾作为
现已停用的 graphql-language-service-interface、
graphql-language-service-parser、graphql-language-service-utils 和
graphql-language-service-types 单独发布。
graphql-language-service-server
使用 graphql-language-service 为基于 LSP 的 IDE 扩展提供语言服务
graphql.vscode-graphql
graphql-language-service-server 在 Visual Studio
Code 中的一个示例实现。可在
marketplace] 上获取。
OVSX 修复待处理。
graphql.vscode-graphql-syntax
一个仅用于语法高亮的新 vscode 扩展,供其他 vscode 扩展使用。
graphql.vscode-graphql-execution
一个用于 vscode-graphql 的扩展,支持内联查询执行。
graphql-language-service-cli
为语言服务服务器提供 CLI。
浏览器与运行时支持
这些包中的许多需要在多个环境中运行。
默认情况下,所有 typescript 包的目标为 es6。
graphql-language-service-server 和 graphql-language-service-cli 是
为 node 运行时制作的,因此它们的目标为 es2017
codemirror-graphql 和 graphiql 浏览器捆绑包使用
.browserslistrc,其目标为现代浏览器,以保持
捆绑包体积小巧,并在使用 async/await 时保持语言服务的高性能,
特别是为了避免对 regenerator-runtime 或
特殊 babel 配置的要求。
.browserslistrc:
last 2 versions
Firefox ESR
not dead
not IE 11
not ios 10
maintained node versions
明确一点,我们_不_支持 Internet Explorer 或旧版本的 常青浏览器。
开发
要设置此 monorepo 的本地开发环境,请参阅 DEVELOPMENT.md
向此仓库贡献
这是一个开源项目,我们欢迎贡献。请参阅 CONTRIBUTING.md 了解如何贡献的详细信息。
此仓库由 EasyCLA 管理。项目参与者必须在做出贡献之前签署免费的 GraphQL Specification Membership agreement 。您只需执行一次此操作,并且可以由 个人贡献者 或 他们的雇主签署。
要启动签署流程,请针对此仓库打开一个 PR。如果 我们仍然需要您签署会员协议,EasyCLA 机器人将阻止合并。
请注意,EasyCLA 已配置为接受来自某些 GitHub 机器人的提交。一旦我们确信它们创建的任何内容不太可能包含受版权保护的内容, 或者是由已经签署 CLA 的人编写的(例如,项目 维护者),这些内容就会在例外基础上获得批准。目前已被批准为例外的机器人是:
- github-actions(仅用于
changesetsAction)
您可以在 此处找到详细信息。 如果您遇到问题,请发送电子邮件至 operations@graphql.org。
维护者
此仓库的维护者定期审查 PR 和问题,并帮助推进 GraphiQL 路线图
校友
没有这些了不起的前任维护者,我们还能走到哪里呢?
- @leebyron - 所有库的原作者
- @asiandrummer - GraphiQL 的原创作者
- @wincent - 早期共同作者和维护者
- @lostplan - 维护语言服务生态系统直到大约 2017 年
- @IvanGoncharov - 维护者,并作为过渡导师指导 @acao 等人
- @orta - 多年来为项目的许多部分提供了帮助,并提供了最初的重设计!
- @divyenduz -
vscode-graphql的原创作者,也是生态系统的许多贡献者。谢谢 Divy!
活跃
目前活跃的维护者(程度各异,请通过我们的 discord 频道联系我们!):
- @imolorhe
- @yoshiakis
- @urigo
- @timsuchanek
- @thomasheyenbrock
- @n1ru4l
- @acao
- @stonexer
- @dimaMachina
- @dotansimha
- @saihaj
- @jonathanawesome
- @cshaver
- @trevor-scheer
感谢 graphql 社区所有的帮助与支持!我这一切都是为了你们,没有你们我做不到 ❤️ - @acao
提出提案!
我们欢迎针对新的 GraphiQL Plugin API 的提案,以及其他关于如何让 IDE 生态系统的其余部分更具性能、可扩展性、互操作性和可扩展性的想法。请随时提交 PR 在 /proposals/ 目录中创建文档。最终,我们希望将这些内容迁移到一个专门用于此目的的仓库中。
社区
- Discord
- 大部分在 GitHub 之外的讨论都发生在 GraphQL Discord 服务器
- Twitter - @GraphiQL 和 #GraphiQL
- GitHub - 在上方创建功能请求、讨论议题和 bug
- Working Group - 是的,欢迎加入!每月举行规划/决策会议, 每两周在 zoom 上举行一次工作会议! 了解更多。