Plugin Prettier untuk SQL yang menggunakan sql-parser-cst dan algoritma pemformatan Prettier yang sebenarnya.
Cobalah secara langsung!
Seperti Prettier untuk JavaScript, plugin ini memformat ekspresi SQL secara berbeda bergantung pada panjangnya. Kueri SQL singkat akan diformat dalam satu baris:
SELECT a, b, c FROM tbl WHERE x > 10 ;
Kueri yang lebih panjang, akan membuat setiap klausa dicetak pada baris terpisah:
SELECT id, client . name , client . priority
FROM client
WHERE client . id IN ( 12 , 18 , 121 );
Yang lebih panjang lagi membuat isi setiap klausa menjorok ke dalam:
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 ;
Saat ini plugin ini mempertahankan sebagian besar elemen sintaksis dan berkonsentrasi terutama pada tata letak spasi.
Lihat STYLE_GUIDE untuk ikhtisar gaya pemformatan SQL yang digunakan.
Instal seperti plugin Prettier lainnya:
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
Kemudian gunakan pada file SQL melalui alat baris perintah Prettier atau ekstensi Prettier untuk editor pilihan Anda.
Secara default plugin akan menentukan dialek SQL berdasarkan ekstensi file:
.sql
atau .sqlite
- SQLite.bigquery
- BigQuery Anda dapat mengganti perilaku ini dengan konfigurasi yang lebih cantik di file .prettierrc.json
:
{
"plugins" : [ " prettier-plugin-sql-cst " ],
"overrides" : [
{
"files" : [ " *.sql " ],
"options" : { "parser" : " bigquery " }
}
]
}
Atau Anda juga bisa menyimpannya di dalam package.json
Anda :
{
"prettier" : {
"plugins" : [ " prettier-plugin-sql-cst " ],
"overrides" : [
{
"files" : [ " *.sql " ],
"options" : { "parser" : " bigquery " }
}
]
}
}
Plugin ini menyediakan parser berikut:
sqlite
bigquery
postgresql
( eksperimental! diperkirakan akan crash )mysql
( eksperimental! diperkirakan akan crash )mariadb
( eksperimental! diperkirakan akan crash ) Opsi standar Prettier printWidth, tabWidth, useTabs berlaku. Ada juga beberapa opsi khusus SQL:
Opsi API | Bawaan | Keterangan |
---|---|---|
sqlKeywordCase | upper | Mengonversi kata kunci SQL menjadi huruf upper atau lower , atau preserve yang sudah ada. Perhatikan bahwa untuk saat ini preserve agak tidak kompatibel dengan sqlCanonicalSyntax: true (misalnya kata kunci AS yang ditambahkan akan selalu menggunakan huruf besar). |
sqlParamTypes | [] | Array tipe parameter terikat: ? , ?nr , $nr , :name , @name , $name . |
sqlCanonicalSyntax | true | Saat diaktifkan, lakukan beberapa perubahan kata kunci dan operator, seperti menerapkan penggunaan AS dalam alias dan mengganti perbandingan <> dengan != . Lihat STYLE_GUIDE untuk detail selengkapnya. (Sejak 0.11.0) |
sqlAcceptUnsupportedGrammar | false | Biasanya ketika plugin menemukan sintaks SQL yang tidak didukungnya, plugin akan menimbulkan kesalahan dan tidak akan memformat apa pun sama sekali. Dengan mengaktifkan opsi ini, ia akan melewati pernyataan SQL yang tidak dikenalinya, membiarkannya apa adanya. |
Untuk menggunakan plugin ini di dalam VSCode, instal ekstensi VSCode yang Lebih Cantik.
Ikuti dokumen VSCode yang lebih cantik untuk mengonfigurasinya sebagai pemformat default.
Anda mungkin juga perlu mengonfigurasi prettier.documentSelectors untuk mengaktifkan Prettier untuk file *.sql
.
Untuk melihat apa yang dilakukan atau tidak dilakukan Prettier - buka jendela VSCode Output dan pilih dropdown Prettier. Pada format, jendela akan menampilkan inferredParser
Anda. Itu harus dikonfirmasi ulang dengan menunjukkan "parser": "sqlite"
(atau perser mana pun yang telah Anda konfigurasikan di dalam bagian overrides
konfigurasi yang lebih cantik) dan plugins
dengan jalur ke paket ini. Jika Anda tidak melihat bagian itu, Prettier tidak menggunakan paket ini.
Dukungan untuk dialek SQL baru bergantung pada dialek ini yang didukung oleh sql-parser-cst. Jika Anda benar-benar menginginkannya, Anda dapat membuka terbitan baru untuk itu di repo parser. Namun perlu diketahui bahwa menerapkan dukungan parser untuk dialek baru membutuhkan banyak usaha. Selama implementasi PostgreSQL, MySQL dan MariaDB belum selesai, kecil kemungkinan pengerjaan pada dialek lain akan dimulai.
Gunakan prettier-plugin-embed bersama dengan prettier-plugin-sql-cst
.
Saat ini plugin ini mendukung dua dialek SQL:
Ia juga memiliki dukungan eksperimental untuk dialek berikut:
Batasan utamanya adalah parser tidak mendukung sintaksis penuh dialek ini. Kita mungkin mengira parser akan mogok karena sintaksis yang lebih spesifik untuk dialek ini. Namun selama penguraian berhasil, pemformatan juga akan berhasil. Terutama kita dapat mengharapkan pemformatan pernyataan SELECT, INSERT, UPDATE, DELETE berfungsi.
Untuk mengatasi keterbatasan ini Anda dapat mengaktifkan opsi sqlAcceptUnsupportedGrammar
, yang akan membuat plugin melewatkan pernyataan SQL yang tidak dikenalinya.
Spesifikasi gaya pemformatan SQL masih dapat berubah. Meskipun prinsip-prinsip umum seharusnya sudah ada sekarang.