ITADN
graphql/graphiql
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

GraphQL IDE Monorepo

安全提示: 所有版本 graphiql < 1.4.7 在 GraphiQL Web 应用连接的 GraphQL 服务器不可信的情况下,均存在 XSS 攻击漏洞。 了解更多 在 graphiql security 文档目录中

正在寻找 GraphiQL 文档?:这是 monorepo 的根目录!完整的 GraphiQL 文档位于 packages/graphiql

Build Status pkg.pr.new Discord Code Coverage GitHub top language GitHub language count Snyk Vulnerabilities for GitHub Repo CII Best Practices

概述

GraphiQL(发音类似“graphical”)是本 monorepo 的参考实现,一个 GraphQL IDE,也是 GraphQL 基金会下的官方项目。代码采用宽松的 MIT 许可证。

无论您是想为服务器搭建一个简单的 GraphiQL IDE 实例,还是为您的框架或插件提供更高级的 Web 或桌面 GraphQL IDE 体验,抑或是想构建 IDE 扩展或插件,您都来对地方了!

本 monorepo 旨在为 GraphQL 社区提供:

  • 一个符合规范的官方语言服务(参见: API 文档)
  • 一个用于 IDE 的综合 LSP 服务器和 CLI 服务
  • 一个 codemirror 模式
  • 一个 monaco 模式(开发中)
  • 一个如何使用该生态系统与 GraphiQL 的示例。
  • 如何实现或扩展 GraphiQL 的示例。

graphiql

NPM jsDelivr hits (npm) npm downloads Snyk Vulnerabilities for npm package npm bundle size (version) npm bundle size (version)

Screenshot of GraphiQL with Doc Explorer Open

/ˈɡrafək(ə)l/ 一个图形化的、可交互的浏览器内 GraphQL IDE。 试用实时演示。我们还有 一个使用我们最新 netlify 构建的演示, 对应 main 分支。

GraphiQL IDE,使用 React 实现,当前使用 CodeMirror 的 GraphQL 模式GraphQL Language Service

了解更多关于 GraphiQL in packages/graphiql/README.md

monaco-graphql

NPM jsDelivr hits (npm) npm downloads Snyk Vulnerabilities for npm package

为 monaco editor 提供强大的、基于 schema 的 graphql 语言模式。 直接使用 graphql-language-service

参见 webpack 示例,这是一个使用 GitHub API 的纯 javascript 演示

codemirror-graphql

NPM jsDelivr hits (npm) npm downloads Snyk Vulnerabilities for npm package

Animated Codemirror GraphQL Completion Example

为 CodeMirror 5 提供 GraphQL 解析模式,并配备由您的 GraphQL Schema 驱动的实时 linter 和 typeahead hinter。使用 graphql-language-service

cm6-graphql

NPM jsDelivr hits (npm) npm downloads Snyk Vulnerabilities for npm package

为 CodeMirror 6 提供功能完整的 GraphQL 语言模式。使用 graphql-language-service

graphql-language-service

NPM npm downloads Snyk Vulnerabilities for npm package

graphql-language-service-server codemirror-graphqlmonaco-graphql 提供语言服务。此前曾作为 现已停用的 graphql-language-service-interfacegraphql-language-service-parsergraphql-language-service-utilsgraphql-language-service-types 单独发布。

graphql-language-service-server

NPM npm downloads Snyk Vulnerabilities for npm package

使用 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

NPM npm downloads Snyk Vulnerabilities for npm package

为语言服务服务器提供 CLI。

浏览器与运行时支持

这些包中的许多需要在多个环境中运行。

默认情况下,所有 typescript 包的目标为 es6

graphql-language-service-servergraphql-language-service-cli 是 为 node 运行时制作的,因此它们的目标为 es2017

codemirror-graphqlgraphiql 浏览器捆绑包使用 .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(仅用于 changesets Action)

您可以在 此处找到详细信息。 如果您遇到问题,请发送电子邮件至 operations@graphql.org

维护者

此仓库的维护者定期审查 PR 和问题,并帮助推进 GraphiQL 路线图

校友

没有这些了不起的前任维护者,我们还能走到哪里呢?

  • @leebyron - 所有库的原作者
  • @asiandrummer - GraphiQL 的原创作者
  • @wincent - 早期共同作者和维护者
  • @lostplan - 维护语言服务生态系统直到大约 2017 年
  • @IvanGoncharov - 维护者,并作为过渡导师指导 @acao 等人
  • @orta - 多年来为项目的许多部分提供了帮助,并提供了最初的重设计!
  • @divyenduz - vscode-graphql 的原创作者,也是生态系统的许多贡献者。谢谢 Divy!

活跃

目前活跃的维护者(程度各异,请通过我们的 discord 频道联系我们!):

感谢 graphql 社区所有的帮助与支持!我这一切都是为了你们,没有你们我做不到 ❤️ - @acao

提出提案!

我们欢迎针对新的 GraphiQL Plugin API 的提案,以及其他关于如何让 IDE 生态系统的其余部分更具性能、可扩展性、互操作性和可扩展性的想法。请随时提交 PR 在 /proposals/ 目录中创建文档。最终,我们希望将这些内容迁移到一个专门用于此目的的仓库中。

社区

  • Discord Discord - 大部分在 GitHub 之外的讨论都发生在 GraphQL Discord 服务器
  • Twitter - @GraphiQL#GraphiQL
  • GitHub - 在上方创建功能请求、讨论议题和 bug
  • Working Group - 是的,欢迎加入!每月举行规划/决策会议, 每两周在 zoom 上举行一次工作会议! 了解更多。