Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

prettier-sql

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

prettier-sql

Format whitespace in a SQL query to make it more readable

  • 5.0.1
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1.5K
increased by34.96%
Maintainers
1
Weekly downloads
 
Created
Source

Prettier SQL NPM version GitHub Workflow Status (event) Coveralls

Prettier SQL is a JavaScript library for pretty-printing SQL queries.

It started as a port of a PHP Library, but has since considerably diverged.

Prettier SQL supports the following dialects:

It does not support:

  • Stored procedures.
  • Changing of the delimiter type to something else than ;.

Try the demo.

Table of contents

Install

Get the latest version from NPM:

npm install prettier-sql

Also available with yarn:

yarn add prettier-sql

Usage

Usage as library

import { format } from 'prettier-sql';

console.log(format('SELECT * FROM tbl'));

This will output:

SELECT
  *
FROM
  tbl

You can also pass in configuration options:

format('SELECT * FROM tbl', {
	language: 'spark', // Defaults to "sql" (see the above list of supported dialects)
	indent: '  ', // Defaults to two spaces
	uppercase: false, // Defaults to true
	linesBetweenQueries: 2, // Defaults to 1
});

Placeholders replacement

// Named placeholders
format("SELECT * FROM tbl WHERE foo = @foo", {
  params: {foo: "'bar'"}
}));

// Indexed placeholders
format("SELECT * FROM tbl WHERE foo = ?", {
  params: ["'bar'"]
}));

Both result in:

SELECT
  *
FROM
  tbl
WHERE
  foo = 'bar'

Usage from command line

The CLI tool will be installed under prettier-sql and may be invoked via npx prettier-sql:

prettier-sql -h
usage: sqlfmt.js [-h] [-o OUTPUT] \
[-l {db2,mariadb,mysql,n1ql,plsql,postgresql,redshift,spark,sql,tsql}] [-c CONFIG] [--version] [FILE]

Prettier SQL

positional arguments:
  FILE            Input SQL file (defaults to stdin)

optional arguments:
  -h, --help      show this help message and exit
  -o, --output    OUTPUT
                    File to write SQL output (defaults to stdout)
  -l, --language  {db2,mariadb,mysql,n1ql,plsql,postgresql,redshift,spark,sql,tsql}
                    SQL dialect (defaults to standard sql)
  -c, --config    CONFIG
                    Path to config json file (will use default configs if unspecified)
  --version       show program's version number and exit

By default, the tool takes queries from stdin and processes them to stdout but one can also name an input file name or use the --output option.

echo 'select * from tbl where id = 3' | prettier-sql
SELECT
  *
FROM
  tbl
WHERE
  id = 3

The tool also accepts a JSON config file with the --config option that takes this form:
All fields are optional and all fields that are not specified will be filled with their default values

{
	"indent": string,
	"uppercase": boolean,
	"keywordPosition": "standard" | "tenSpaceLeft" | "tenSpaceRight",
	"newline": {
		"mode": "always" | "itemCount" | "lineWidth" | "hybrid" | "never",
		"itemCount"?: number // only used if newline.mode is itemCount or hybrid
	},
	"breakBeforeBooleanOperator": boolean,
	"aliasAs": "always" | "select" | "never",
	"tabulateAlias": boolean,
	"commaPosition": "before" | "after" | "tabular",
	"parenOptions": {
		"openParenNewline": boolean,
		"closeParenNewline": boolean
	},
	"lineWidth": number,
	"linesBetweenQueries": number,
	"denseOperators": boolean,
	"semicolonNewline": boolean,
}

Usage without NPM

If you don't use a module bundler, clone the repository, run npm install and grab a file from /dist directory to use inside a <script> tag. This makes Prettier SQL available as a global variable window.prettierSql.

Usage with VSCode

Prettier SQL is also available as a VSCode extension here:
https://marketplace.visualstudio.com/items?itemName=inferrinizzard.prettier-sql-vscode

Contributing

Please see CONTRIBUTING.md

License

MIT

Keywords

FAQs

Package last updated on 25 Nov 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc