Un complemento Prettier para SQL que utiliza sql-parser-cst y el algoritmo de formato Prettier real.
¡Pruébalo en vivo!
Al igual que Prettier para JavaScript, este complemento da formato a las expresiones SQL de manera diferente según su longitud. Una breve consulta SQL se formateará en una sola línea:
SELECT a, b, c FROM tbl WHERE x > 10 ;
Una consulta más larga hará que cada cláusula se imprima en una línea separada:
SELECT id, client . name , client . priority
FROM client
WHERE client . id IN ( 12 , 18 , 121 );
En uno aún más largo se sangra el contenido de cada cláusula:
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 ;
Actualmente, este complemento conserva la mayoría de los elementos de sintaxis y se concentra principalmente en el diseño de los espacios en blanco.
Consulte STYLE_GUIDE para obtener una descripción general del estilo de formato SQL utilizado.
Instálalo como cualquier otro complemento de 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
Luego utilícelo en archivos SQL a través de la herramienta de línea de comandos Prettier o la extensión Prettier para el editor que elija.
De forma predeterminada, el complemento determinará el dialecto SQL según la extensión del archivo:
.sql
o .sqlite
- SQLite.bigquery
-BigQuery Puede anular este comportamiento con una configuración más bonita en el archivo .prettierrc.json
:
{
"plugins" : [ " prettier-plugin-sql-cst " ],
"overrides" : [
{
"files" : [ " *.sql " ],
"options" : { "parser" : " bigquery " }
}
]
}
O también puedes almacenarlo dentro de tu package.json
:
{
"prettier" : {
"plugins" : [ " prettier-plugin-sql-cst " ],
"overrides" : [
{
"files" : [ " *.sql " ],
"options" : { "parser" : " bigquery " }
}
]
}
}
El complemento proporciona los siguientes analizadores:
sqlite
bigquery
postgresql
( ¡experimental! Se esperan fallos )mysql
( ¡experimental! Se esperan fallos )mariadb
( ¡experimental! Se esperan fallos ) Se aplican las opciones estándar de Prettier printWidth, tabWidth, useTabs. También hay algunas opciones específicas de SQL:
Opción API | Por defecto | Descripción |
---|---|---|
sqlKeywordCase | upper | Convierte palabras clave SQL a upper o lower , o preserve las existentes. Tenga en cuenta que, por ahora, preserve es algo incompatible con sqlCanonicalSyntax: true (por ejemplo, las palabras clave AS agregadas siempre estarán en mayúsculas). |
sqlParamTypes | [] | Matriz de tipos de parámetros vinculados: ? , ?nr , $nr , :name , @name , $name . |
sqlCanonicalSyntax | true | Cuando está habilitado, realiza algunos cambios obstinados de palabras clave y operadores, como imponer el uso de AS en alias y reemplazar <> comparaciones con != . Consulta STYLE_GUIDE para obtener más detalles. (Desde 0.11.0) |
sqlAcceptUnsupportedGrammar | false | Normalmente, cuando el complemento encuentra una sintaxis SQL que no admite, arrojará un error y no formateará nada en absoluto. Con esta opción habilitada, omitirá las declaraciones SQL que no reconoce y las dejará como están. |
Para usar este complemento dentro de VSCode, instale la extensión Prettier VSCode.
Siga los documentos de Prettier VSCode para configurarlo como formateador predeterminado.
Es posible que también necesites configurar prettier.documentSelectors para habilitar Prettier para archivos *.sql
.
Para ver qué está haciendo o no Prettier, abra la ventana Salida de VSCode y seleccione el menú desplegable Prettier. En formato, la ventana debería mostrar su inferredParser
. Debería reconfirmarlo mostrando "parser": "sqlite"
(o cualquier perser que haya configurado dentro de su sección de overrides
de configuración más bonita) y plugins
con la ruta a este paquete. Si no ve esa parte, Prettier no usa este paquete.
La compatibilidad con nuevos dialectos SQL depende de que sql-parser-cst admita estos dialectos. Si realmente lo desea, puede abrir una nueva edición para eso en el repositorio del analizador. Pero tenga en cuenta que implementar compatibilidad con analizadores para nuevos dialectos requiere mucho trabajo. Mientras no finalice la implementación en curso de PostgreSQL, MySQL y MariaDB, es poco probable que se comience a trabajar en algún otro dialecto.
Utilice prettier-plugin-embed junto con prettier-plugin-sql-cst
.
Actualmente, este complemento admite dos dialectos SQL:
También cuenta con soporte experimental para los siguientes dialectos:
La principal limitación es que el analizador no admite la sintaxis completa de estos dialectos. Uno debería esperar que el analizador falle por la sintaxis que es más específica de estos dialectos. Pero mientras el análisis sea exitoso, el formateo también debería ser exitoso. Principalmente se puede esperar que funcione el formato de las declaraciones SELECT, INSERT, UPDATE, DELETE.
Para superar esta limitación, puede habilitar la opción sqlAcceptUnsupportedGrammar
, que hará que el complemento omita las declaraciones SQL que no reconoce.
Los detalles del estilo de formato SQL todavía están sujetos a cambios. Aunque los principios generales ya deberían estar prácticamente establecidos.