An opinionated sql formatter plugin for Prettier
npm install prettier-plugin-sql> An opinionated sql formatter plugin for [Prettier][]
Prettier is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing, taking various rules into account.
This plugin adds support for a lot of sql files through [sql-formatter][] or [node-sql-parser][].
This plugin is still under development, its printer just wraps [sql-formatter][] or [node-sql-parser][]'s default printer.
Of course it should just work, but may not match [prettier][]'s format sometimes.
prettier-plugin-sql is an evergreen module. 🌲 This module requires an LTS Node version (v14.18.0+).
Using npm:
``shnpm
npm i -D prettier prettier-plugin-sql
Usage
Once installed, Prettier plugins must be added to
.prettierrc:`json
{
"plugins": ["prettier-plugin-sql"]
}
`Then:
`sh
npx
npx prettier --write db.sqlyarn
yarn prettier --write db.sql
`$3
prettier-plugin-embed and configuring as follows:prettier.config.mjs`js
/* @type {import('prettier').Config} /
const prettierConfig = {
plugins: ['prettier-plugin-embed', 'prettier-plugin-sql'],
}/* @type {import('prettier-plugin-embed').PrettierPluginEmbedOptions} /
const prettierPluginEmbedConfig = {
embeddedSqlTags: ['sql'],
}
/* @type {import('prettier-plugin-sql').SqlBaseOptions} /
const prettierPluginSqlConfig = {
language: 'postgresql',
keywordCase: 'upper',
}
const config = {
...prettierConfig,
...prettierPluginEmbedConfig,
...prettierPluginSqlConfig,
}
export default config
`Before formatting:
`ts
const animals = await sql
`After formatting:
`ts
const animals = await sql
`Parser Options
`ts
interface SqlOptions {
formatter: 'sql-formatter' | 'node-sql-parser' // default sql-formatter // sql-formatter
language:
| 'sql'
| 'bigquery'
| 'db2'
| 'db2i' // (experimental)
| 'hive'
| 'mariadb'
| 'mysql'
| 'n1ql'
| 'postgresql'
| 'plsql'
| 'redshift'
| 'singlestoredb'
| 'snowflake'
| 'spark'
| 'sqlite'
| 'transactsql'
| 'tsql'
| 'trino'
// default
sql
dialect: string // JSOX stringified, please refer https://github.com/sql-formatter-org/sql-formatter/blob/master/docs/dialect.md for more details
keywordCase: 'preserve' | 'upper' | 'lower' // default preserve
dataTypeCase: 'preserve' | 'upper' | 'lower' // default preserve
functionCase: 'preserve' | 'upper' | 'lower' // default preserve
identifierCase: 'preserve' | 'upper' | 'lower' // default preserve, experimental
indentStyle: 'standard' | 'tabularLeft' | 'tabularRight' // default standard
logicalOperatorNewline: 'before' | 'after' // default before
expressionWidth: number // default 50
linesBetweenQueries: number // default 1
denseOperators: boolean // default false
newlineBeforeSemicolon: boolean // default false
params: string // JSOX stringified, please refer https://github.com/sql-formatter-org/sql-formatter/blob/master/docs/params.md for more details
paramTypes: string // JSOX stringified, please refer https://github.com/sql-formatter-org/sql-formatter/blob/master/docs/paramTypes.md for more details // node-sql-parser
type: 'table' | 'column' // default
table
database:
| 'bigquery'
| 'db2'
| 'hive'
| 'mariadb'
| 'mysql'
| 'postgresql'
| 'transactsql'
| 'flinksql'
| 'snowflake' // (alpha)
// default mysql
}
``More details on [sql-formatter][] and [node-sql-parser][].

| 1stG | RxTS | UnTS |
| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
|  |  |  |
| 1stG | RxTS | UnTS |
| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|  |  |  |
Detailed changes for each release are documented in CHANGELOG.md.
[MIT][] © [JounQin][]@[1stG.me][]
[1stG.me]: https://www.1stG.me
[JounQin]: https://github.com/JounQin
[MIT]: http://opensource.org/licenses/MIT
[node-sql-parser]: https://github.com/taozhi8833998/node-sql-parser
[prettier]: https://prettier.io
[sql-formatter]: https://github.com/zeroturnaround/sql-formatter