如何从命令行漂亮打印或美化 GraphQL 文本?

如何从命令行漂亮打印或美化 GraphQL 文本?

我有一个 GraphQL 查询,GetPerson.gql它全部压缩在一行中:

{ getPerson(id: 42) { name, age } }

如何使用命令行漂亮地打印或美化此文本?

$ magical-command GetPerson.gql
{
  getPerson(id: 42) {
    name,
    age
  }
}

答案1

使用prettierbrew install prettier通过在 macOS 上安装:

$ cat file.gql
{ getPerson(id: 42) { name, age } }
$ prettier file.gql
{
  getPerson(id: 42) {
    name
    age
  }
}

--parser graphql(如果在此示例中使用,则会得到相同的输出。)

该工具可以使用或prettier进行就地编辑。也可以看看。-w--writeprettier --help

答案2

因此,首先,如果您在 meta 上有任何联系人,请告诉他们将运行良好的 graphql 实用程序全部合并到 GraphiQL IDE monorepo 中是多么糟糕的设计决策。比如,为什么?让一切变得更加困难,但是很棒,现在您可以在更短的时间内发布更多有缺陷的版本。

无论如何,您想要的是使用 GraphQL 的语言服务器协议 (LSP) 服务器,VS Code 和完全必要的 GraphiQL IDE 之类的东西在内部使用来缩进代码、理解光标下的符号、自动完成……

对于 GraphQL,这是以前可用的独立项目graphql-language-service。尝试通过以下方式安装npmnpm i -g graphql-language-service-server

然后,您需要使用可以接受命令来格式化文件的客户端。在这种情况下,neovim 似乎是您最好的选择。您需要对其进行设置,以便在加载 graphql 文件时根据需要自动启动 LSP 服务器并连接到它。然后,您发出命令来打开文件,将文件类型设置为 GraphQL ( :set ft=graphql),然后运行:lua vim.lsp.buf.format()​​,保存生成的文件 ( :w),然后退出。所以,作为命令行,类似

nvim -c ':set ft=graphql' -c ':lua  vim.lsp.buf.format()' -c ':w' -c ':q' yourfile

现在,我还没有测试过这个,所以我确信魔鬼在于为 graphql 设置 neovim + LSP 的细节(顺便说一句,我使用 astronvim 来获得有用的基本配置),所以我担心我'我会将这一级别的工作留给您解决。

好处是你可以使用 neovim 作为客户端任何LSP,无论是 C++、Rust、JavaScript 还是当今任何更晦涩难懂的语言都带有 LSP 实现。

相关内容