esbeautify

lightweight and blazing fast JavaScript code generator from an EScaya-compliant AST

Usage no npm install needed!

<script type="module">
  import esbeautify from 'https://cdn.skypack.dev/esbeautify';
</script>

README

ESBeautify

Blazing fast JavaScript beautifier and minifier


WIP!

Features

  • Generates JavaScript code up to ECMAScript® 2021
  • Generated output is 98 % identical to the input.
  • Supports prettier options
  • Supports code compression (minification)
  • Supports JSON serializing
  • Supports source map
  • Supports incremental code generation
  • Performance
  • Optimized for use on handheld devices such as a mobile phone or tablet
  • No backtracking
  • Low memory usage

API

Esbeautify uses Escaya to generat JavaScript code up to ECMAScript® 2021, and does some code formatting based on your options.

Options

export interface Options {
 // Enable ESNext features
  next?: boolean;
  // Enable location tracking
  loc?: boolean;
  // Disable Web compat
  disableWebCompat?: boolean;
  // Force strict mode
  impliedStrict?: boolean;
  // Specify the number of spaces per indentation-level
  tabWidth?: number;
  // Print semicolons at the ends of statements
  semicolons?: boolean;
  // Remove unnecessary whitespace
  removeWhiteSpace?: boolean;
  // Define file endings ('lf', 'crlf', or 'cr')
  endOfLine?: string;
  // Removes unnecessary whitespace, semicolons and line endings
  minify?: boolean;
  // Include parentheses around a sole arrow function parameter
  arrowParens?: boolean;
  // Enable the ability to omit superfluous parentheses
  parentheses?: boolean;
  // Print trailing commas wherever possible when multi-line
  trailingCommas?: boolean;
  // Use single quotes instead of double quotes
  singleQuote?: boolean;
}

Example usage:

import { beutifyScript } from 'esbeutify';

 generate(`[
     a
          = b
      ]
        =
  c`);

produces the string '[a = b] = c'.

This is how you minify

import { beutifyScript } from 'esbeutify';

 generate(`[
     a
          = b
      ]
        =
  c`, { minify: true });

produces the string '[a=b]=c'.