Skip to main content

es6-compatible javascript minifier

Project description

esprima-compiler is a es6-compatible javascript minifier written by python. esprima-compiler uses esprima-python as javascript parser library


  • ES6 support

  • Mangling function and variable names

  • Ident output

  • Obfuscate strings


pip install esprima-compiler


Example javascript file

const Aconst = Math.PI, Bconst = "Bconst";
const Cconst = "Cconst";

function add(a, b){
        function foo(){
                return a+b;
        return foo();

const Dconst="Dconst";

function mul(a, b){
        return a*b;

const Econst="Econst";
let Alet="Alet";
const Fconst="Fconst", Gconst="Gconst";

Rearrange and mangle variables:

python -m esprima_compiler -r --mangle-variable test.js
const Aconst=Math.PI,Bconst="Bconst",Cconst="Cconst";
function add($a,$b){
  function foo(){
    return $a+$b;
  return foo();
const Dconst="Dconst";
function mul($a,$b){
  return $a*$b;
const Econst="Econst",Fconst="Fconst",Gconst="Gconst";
let Alet="Alet";

Rearrange variables and mangle variables (include top level) and function names (except top-level):

python -m esprima_compiler -r --mangle-variable-top --mangle-function test.js
const $a=Math.PI,$b="Bconst",$c="Cconst";
function add($d,$e){
  function $f(){
    return $d+$e;
  return $f();
const $d="Dconst";
function mul($e,$f){
  return $e*$f;
const $e="Econst",$f="Fconst",$g="Gconst";
let $h="Alet";

Rearrange variables and mangle variables and function names (include top level) without identing:

python -m esprima_compiler -i 0 -r --mangle-variable-top --mangle-function-top --mangle-function test.js
const $a=Math.PI,$b="Bconst",$c="Cconst";function $d($e,$f){function $g(){return $e+$f;}return $g();}const $e="Dconst";function $f($g,$h){return $g*$h;}const $g="Econst",$h="Fconst",$i="Gconst";let $j="Alet";


Compile javascript string:

>>> from esprima_compiler.compiler import Compiler
>>> c = Compiler(rearrange=True, mangle_variable=True, mangle_variable_top=True)
>>> js = """
... const A=1;
... const B=2;
... let C=3;
... class TestClass extends Object{
...   constructor(a, b){
...     this._a=a;
...     this.b=b;
...   }
...   static get a(){
...     return this._a;
...   }
...   set b(b){
...     this.b=b;
...   }
...   static async sum(){
...     return this.a+this.b
...   }
... }
... """
>>> buf = c.compile(js)
>>> print(
const $a=1,$b=2;
let $c=3;
class TestClass extends Object{
  static get a(){
    return this._a;
  set b($d){
  static async sum(){
    return this.a+this.b;

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

esprimajs-0.1.0.tar.gz (13.3 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page