Um plugin Prettier para SQL que usa sql-parser-cst e o algoritmo de formatação Prettier real.
Experimente ao vivo!
Assim como o Prettier para JavaScript, este plugin formata as expressões SQL de maneira diferente, dependendo de seu comprimento. Uma consulta SQL curta será formatada em uma única linha:
SELECT a, b, c FROM tbl WHERE x > 10 ;
Uma consulta mais longa imprimirá cada cláusula em uma linha separada:
SELECT id, client . name , client . priority
FROM client
WHERE client . id IN ( 12 , 18 , 121 );
Um ainda mais longo obtém o conteúdo de cada cláusula recuado:
SELECT
client . id ,
client . name AS client_name,
organization . name AS org_name,
count ( orders . id ) AS nr_of_orders
FROM
client
LEFT JOIN organization ON client . organization_id = organization . id
LEFT JOIN orders ON orders . client_id = client . id
WHERE
client . status = ' active '
AND client . id IN ( 28 , 214 , 457 )
AND orders . status IN ( ' active ' , ' pending ' , ' processing ' )
GROUP BY client . id
ORDER BY client . name
LIMIT 100 ;
Atualmente este plugin preserva a maioria dos elementos de sintaxe e concentra-se principalmente no layout dos espaços em branco.
Consulte STYLE_GUIDE para obter uma visão geral do estilo de formatação SQL usado.
Instale-o como qualquer outro plugin Prettier:
npm install --save-dev prettier prettier-plugin-sql-cst
# or
pnpm add --save-dev prettier prettier-plugin-sql-cst
# or
yarn add --dev prettier prettier-plugin-sql-cst
Em seguida, use-o em arquivos SQL por meio da ferramenta de linha de comando Prettier ou da extensão Prettier para o editor de sua escolha.
Por padrão, o plugin determinará o dialeto SQL com base na extensão do arquivo:
.sql
ou .sqlite
- SQLite.bigquery
-BigQuery Você pode substituir esse comportamento por uma configuração mais bonita no arquivo .prettierrc.json
:
{
"plugins" : [ " prettier-plugin-sql-cst " ],
"overrides" : [
{
"files" : [ " *.sql " ],
"options" : { "parser" : " bigquery " }
}
]
}
Ou você também pode armazená-lo dentro do seu package.json
:
{
"prettier" : {
"plugins" : [ " prettier-plugin-sql-cst " ],
"overrides" : [
{
"files" : [ " *.sql " ],
"options" : { "parser" : " bigquery " }
}
]
}
}
O plugin fornece os seguintes analisadores:
sqlite
bigquery
postgresql
( experimental! espere falhas )mysql
( experimental! espere falhas )mariadb
( experimental! espere falhas ) As opções padrão mais bonitas printWidth, tabWidth, useTabs se aplicam. Existem também algumas opções específicas de SQL:
Opção de API | Padrão | Descrição |
---|---|---|
sqlKeywordCase | upper | Converte palavras-chave SQL em upper ou lower ou preserve as existentes. Observe que, por enquanto, preserve é um tanto incompatível com sqlCanonicalSyntax: true (por exemplo, as palavras-chave AS adicionadas sempre estarão em maiúsculas). |
sqlParamTypes | [] | Matriz de tipos de parâmetros vinculados: ? , ?nr , $nr , :name , @name , $name . |
sqlCanonicalSyntax | true | Quando ativado, realiza algumas alterações opinativas de palavras-chave e operadores, como impor o uso de AS em aliases e substituir comparações <> por != . Consulte STYLE_GUIDE para obter mais detalhes. (Desde 0.11.0) |
sqlAcceptUnsupportedGrammar | false | Normalmente, quando o plugin encontra a sintaxe SQL que não suporta, gerará um erro e não formatará nada. Com esta opção habilitada, ele irá ignorar as instruções SQL que não reconhece, deixando-as como estão. |
Para usar este plugin dentro do VSCode, instale a extensão Prettier VSCode.
Siga a documentação do Prettier VSCode para configurá-lo como o formatador padrão.
Talvez também seja necessário configurar prettier.documentSelectors para ativar o Prettier para arquivos *.sql
.
Para ver o que o Prettier está ou não fazendo - abra a janela VSCode Output e selecione o menu suspenso Prettier. No formato, a janela deve mostrar seu inferredParser
. Ele deve reconfirmar isso mostrando "parser": "sqlite"
(ou qualquer perser que você configurou dentro de sua seção overrides
de configuração mais bonita) e plugins
com o caminho para este pacote. Se você não vir essa parte, mais bonito não está usando este pacote.
O suporte para novos dialetos SQL depende do suporte desses dialetos pelo sql-parser-cst. Se você realmente quiser, pode abrir um novo problema para isso no repositório do analisador. Mas esteja ciente de que implementar o suporte do analisador para novos dialetos dá muito trabalho. Enquanto a implementação contínua do PostgreSQL, MySQL e MariaDB não estiver concluída, é improvável que o trabalho em qualquer outro dialeto seja iniciado.
Use prettier-plugin-embed junto com prettier-plugin-sql-cst
.
Atualmente este plugin suporta dois dialetos SQL:
Também possui suporte experimental para os seguintes dialetos:
A principal limitação é que o analisador não suporta a sintaxe completa desses dialetos. Deve-se esperar que o analisador trave devido à sintaxe mais específica para esses dialetos. Mas, desde que a análise seja bem-sucedida, a formatação também deverá ser bem-sucedida. Principalmente, pode-se esperar que a formatação das instruções SELECT, INSERT, UPDATE, DELETE funcione.
Para superar essa limitação você pode ativar a opção sqlAcceptUnsupportedGrammar
, que fará com que o plugin ignore as instruções SQL que não reconhece.
As especificidades do estilo de formatação SQL ainda estão sujeitas a alterações. Embora os princípios gerais já devam estar em vigor agora.