Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

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.

Files for esprimajs, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size esprimajs-0.1.0.tar.gz (13.3 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page