コマンドラインでGraphQLテキストをきれいに印刷または美しくする方法は?

コマンドラインでGraphQLテキストをきれいに印刷または美しくする方法は?

GetPerson.gqlすべて1行に圧縮されたGraphQLクエリがあります。

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

コマンドラインを使用して、このテキストをどのようにきれいに印刷したり美しくすることができますか?

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

答え1

使用prettierbrew install prettiermacOSにインストール:

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

--parser graphql(この例で使用すると、同じ出力が得られます。)

このツールはprettierその場で使用または編集できます。また、見ることができます。-w--writeprettier --help

答え2

したがって、まずメタに関する連絡先がある場合は、うまく機能するgraphqlユーティリティをGraphiQL IDEの単一のリポジトリに組み込んだのが間違った設計決定であることを教えてください。なぜですか?すべてがより難しくなりますが、素晴らしいです。これで、短時間でより多くのバグを持つバージョンをリリースできます。

とにかく、あなたが望むのは、VS CodeなどのGraphQLを使用するLSP(Language Server Protocol)サーバーで、完全に必要な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をクライアントとして使用できることです。どのC ++、Rust、JavaScript、または今日より曖昧な言語である場合でも、LSPはLSP実装に付属しています。

関連情報