/pg-minify

Minifies PostgreSQL scripts.

Primary LanguageJavaScriptMIT LicenseMIT

pg-minify

Build Status Node Version

Minifies PostgreSQL scripts, reducing the IO usage.

Features:

  • Removes /*multi-line*/ (including nested) and --single-line comments
  • Preserves special/copyright multi-line comments that start with /*!
  • Concatenates multi-line strings into a single line with \n
  • Fixes multi-line text, prefixing it with E where needed
  • Removes redundant line gaps: line breaks, tabs and spaces
  • Provides basic parsing and error detection for invalid SQL
  • Flattens the resulting script into a single line
  • Optionally, compresses SQL for minimum space

Installing

$ npm install pg-minify

Usage

const minify = require('pg-minify');

const sql = 'SELECT 1; -- comments';

minify(sql); //=> SELECT 1;

with compression (removes all unnecessary spaces):

const sql = 'SELECT * FROM "table" WHERE col = 123; -- comments';

minify(sql, {compress: true});
//=> SELECT*FROM"table"WHERE col=123;

The library's distribution includes TypeScript declarations.

Error Handling

SQLParsingError is thrown on failed SQL parsing:

try {
    minify('SELECT \'1');
} catch (error) {
    // error is minify.SQLParsingError instance
    // error.message:
    // Error parsing SQL at {line:1,col:8}: Unclosed text block.
}

API

minify(sql, [options]) ⇒ String

Minifies SQL into a single line, according to the options.

options.compress ⇒ Boolean

Compresses / uglifies the SQL to its bare minimum, by removing all unnecessary spaces.

  • false (default) - keeps minimum spaces, for easier read
  • true - removes all unnecessary spaces

See also: SQL Compression.

options.removeAll ⇒ Boolean

Removes everything, i.e. special/copyright multi-line comments that start with /*! will be removed as well.

Limitations

Double-dollar $$ string escaping, which avoids escaping single quotes, is not supported. See #12.

License

Copyright © 2020 Vitaly Tomilov; Released under the MIT license.