luamin uses the excellent luaparse library to parse Lua code into an Abstract Syntax Tree. Based on that AST, luamin then generates a (hopefully) more compact yet semantically equivalent Lua program. Here’s an online demo.
luamin was inspired by the LuaMinify and esmangle projects.
Feel free to fork if you see possible improvements!
In a browser:
<script src="luamin.js"></script>
Via npm:
npm install luamin
In Narwhal, Node.js, and RingoJS:
var luamin = require('luamin');
In Rhino:
load('luamin.js');
Using an AMD loader like RequireJS:
require(
{
'paths': {
'luamin': 'path/to/luamin'
}
},
['luamin'],
function(luamin) {
console.log(luamin);
}
);
Usage example:
var luaCode = 'a = ((1 + 2) - 3) * (4 / (5 ^ 6)) -- foo';
luamin.minify(luaCode); // 'a=(1+2-3)*4/5^6'
// `minify` also accepts luaparse-compatible ASTs as its argument:
var ast = luaparse.parse(luaCode, { 'scope': true });
luamin.minify(ast); // 'a=(1+2-3)*4/5^6'
To use the luamin
binary in your shell, simply install luamin globally using npm:
npm install -g luamin
After that you will be able to minify Lua scripts from the command line:
$ luamin -c 'a = ((1 + 2) - 3) * (4 / (5 ^ 6))'
a=(1+2-3)*4/5^6
$ luamin -f foo.lua
a=(1+2-3)*4/5^6
See luamin --help
for the full list of options.
luamin has been tested in at least Chrome 25-27, Firefox 3-22, Safari 4-6, Opera 10-12, IE 6-10, Node.js v0.10.0, Narwhal 0.3.2, RingoJS 0.8-0.9, and Rhino 1.7RC4.
After cloning this repository, run npm install --dev
to install the dependencies needed for luamin development and testing. You may want to install Istanbul globally using npm install istanbul -g
.
Once that’s done, you can run the unit tests in Node using npm test
or node tests/tests.js
. To run the tests in Rhino, Ringo, Narwhal, and web browsers as well, use grunt test
.
To generate the code coverage report, use grunt cover
.