You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
2 years ago | |
---|---|---|
.. | ||
lib | 2 years ago | |
typescript | 2 years ago | |
README.md | 2 years ago | |
package.json | 2 years ago |
README.md
pg-minify
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 readtrue
- 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.
Testing
First, clone the repository and install DEV dependencies.
$ npm test
Testing with coverage:
$ npm run coverage
License
Copyright © 2020 Vitaly Tomilov; Released under the MIT license.