Un plugin Prettier pour SQL qui utilise sql-parser-cst et l'algorithme de formatage Prettier actuel.
Essayez-le en direct !
Comme Prettier pour JavaScript, ce plugin formate les expressions SQL différemment en fonction de leur longueur. Une courte requête SQL sera formatée sur une seule ligne :
SELECT a, b, c FROM tbl WHERE x > 10 ;
Une requête plus longue obtiendra chaque clause imprimée sur une ligne distincte :
SELECT id, client . name , client . priority
FROM client
WHERE client . id IN ( 12 , 18 , 121 );
Une clause encore plus longue met le contenu de chaque clause en retrait :
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 ;
Actuellement, ce plugin conserve la plupart des éléments de syntaxe et se concentre principalement sur la disposition des espaces.
Voir STYLE_GUIDE pour un aperçu du style de formatage SQL utilisé.
Installez-le comme n'importe quel autre 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
Utilisez-le ensuite sur des fichiers SQL via l'outil de ligne de commande Prettier ou l'extension Prettier pour l'éditeur de votre choix.
Par défaut, le plugin déterminera le dialecte SQL en fonction de l'extension du fichier :
.sql
ou .sqlite
- SQLite.bigquery
– BigQuery Vous pouvez remplacer ce comportement par une configuration plus jolie dans le fichier .prettierrc.json
:
{
"plugins" : [ " prettier-plugin-sql-cst " ],
"overrides" : [
{
"files" : [ " *.sql " ],
"options" : { "parser" : " bigquery " }
}
]
}
Ou vous pouvez également le stocker dans votre package.json
:
{
"prettier" : {
"plugins" : [ " prettier-plugin-sql-cst " ],
"overrides" : [
{
"files" : [ " *.sql " ],
"options" : { "parser" : " bigquery " }
}
]
}
}
Le plugin fournit les analyseurs suivants :
sqlite
bigquery
postgresql
( expérimental ! Attendez-vous à des plantages )mysql
( expérimental ! Attendez-vous à des crashs )mariadb
( expérimental ! Attendez-vous à des plantages ) Les options standard de Prettier printWidth, tabWidth et useTabs s'appliquent. Il existe également quelques options spécifiques à SQL :
Option API | Défaut | Description |
---|---|---|
sqlKeywordCase | upper | Convertit les mots-clés SQL en upper ou lower , ou preserve ceux existants. Notez que pour l'instant, preserve est quelque peu incompatible avec sqlCanonicalSyntax: true (par exemple, les mots-clés AS ajoutés seront toujours en majuscules). |
sqlParamTypes | [] | Tableau de types de paramètres liés : ? , ?nr , $nr , :name , @name , $name . |
sqlCanonicalSyntax | true | Lorsqu'il est activé, effectue des modifications avisées des mots-clés et des opérateurs, comme imposer l'utilisation de AS dans les alias et remplacer les comparaisons <> par != . Voir STYLE_GUIDE pour plus de détails. (Depuis 0.11.0) |
sqlAcceptUnsupportedGrammar | false | Normalement, lorsque le plugin rencontre la syntaxe SQL qu'il ne prend pas en charge, il génère une erreur et ne formate rien du tout. Avec cette option activée, il ignorera les instructions SQL qu'il ne reconnaît pas, les laissant telles quelles. |
Pour utiliser ce plugin dans VSCode, installez l'extension Prettier VSCode.
Suivez la documentation Prettier VSCode pour le configurer comme formateur par défaut.
Vous devrez peut-être également configurer prettier.documentSelectors pour activer Prettier pour les fichiers *.sql
.
Pour voir ce que Prettier fait ou ne fait pas, ouvrez la fenêtre VSCode Output et sélectionnez la liste déroulante Prettier. Au format, la fenêtre devrait afficher votre inferredParser
. Il devrait reconfirmer cela en affichant "parser": "sqlite"
(ou le perser que vous avez configuré dans votre plus jolie section overrides
de configuration) et plugins
avec le chemin d'accès à ce package. Si vous ne voyez pas cette partie, Prettier n'utilise pas ce package.
La prise en charge des nouveaux dialectes SQL dépend de la prise en charge de ces dialectes par sql-parser-cst. Si vous le souhaitez vraiment, vous pouvez ouvrir un nouveau problème pour cela dans le dépôt de l'analyseur. Mais sachez que la mise en œuvre de la prise en charge de l'analyseur pour les nouveaux dialectes demande beaucoup de travail. Tant que l'implémentation en cours de PostgreSQL, MySQL et MariaDB n'est pas terminée, il est peu probable que le travail sur un autre dialecte démarre.
Utilisez plus joli-plugin-embed avec prettier-plugin-sql-cst
.
Actuellement, ce plugin prend en charge deux dialectes SQL :
Il prend également en charge expérimentalement les dialectes suivants :
La principale limitation est que l'analyseur ne prend pas en charge la syntaxe complète de ces dialectes. Il faut s'attendre à ce que l'analyseur plante pour une syntaxe plus spécifique à ces dialectes. Mais tant que l’analyse réussit, le formatage devrait également réussir. On peut principalement s'attendre à ce que le formatage des instructions SELECT, INSERT, UPDATE, DELETE fonctionne.
Pour surmonter cette limitation, vous pouvez activer l'option sqlAcceptUnsupportedGrammar
, qui permettra au plugin d'ignorer les instructions SQL qu'il ne reconnaît pas.
Les spécificités du style de formatage SQL sont encore très susceptibles de changer. Même si les principes généraux devraient désormais être pour la plupart en place.