From d622a39c9e32ebf7701ad13e85742dd926c239df Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 29 Aug 2012 12:37:05 +0200 Subject: [PATCH] + composer.json and REAMDE.md --- README.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ composer.json | 23 ++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 README.md create mode 100644 composer.json diff --git a/README.md b/README.md new file mode 100644 index 0000000..d01826c --- /dev/null +++ b/README.md @@ -0,0 +1,53 @@ +JSqueeze: Efficient JavaScript minification in PHP +================================================== + +JSqueeze shrinks / compresses / minifies / mangles Javascript code. + +It's a single PHP class licensed under Apache 2 and GPLv2 that is beeing +developed, maintained and thouroughly tested since 2003 on major JavaScript +frameworks (e.g. jQuery). + +JSqueeze operates on any parse error free JavaScript code, even when semi-colons +are missing. + +In term of compression ratio, it compares to YUI Compressor and UglifyJS. + +Features +-------- + +* Removes comments and white spaces. +* Renames every local vars, typically to a single character. +* Keep Microsoft's conditional comments. +* In order to maximise later HTTP compression (deflate, gzip), new variables + names are choosen by considering closures, variables' frequency and + characters' frequency. +* Renames also global vars, methods and properties, but only if they are marked + special by some naming convention. By default, special var names begin with + one or more "$", or with a single "_". +* Renames also local/global vars found in strings, but only if they are marked + special. +* If you use with/eval then be careful. + +Bonus +----- + +* Replaces false/true by !1/!0 +* Replaces new Array/Object by []/{} +* Merges consecutive "var" declarations with commas +* Merges consecutive concatened strings +* Fix a bug in Safari's parser (http://forums.asp.net/thread/1585609.aspx) +* Can replace optional semi-colons by line feeds, thus facilitating output + debugging. +* Keep important comments marked with /*!... +* Treats three semi-colons ;;; like single-line comments + (http://dean.edwards.name/packer/2/usage/#triple-semi-colon). +* Fix special catch scope across browsers +* Work around buggy-handling of named function expressions in IE<=8 + +To do? +------ + +* foo['bar'] => foo.bar +* {'foo':'bar'} => {foo:'bar'} +* Dead code removal (never used function) +* Munge primitives: var WINDOW=window, etc. diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..da490a6 --- /dev/null +++ b/composer.json @@ -0,0 +1,23 @@ +{ + "name": "patchwork/jsqueeze", + "type": "library", + "description": "Efficient JavaScript minification in PHP", + "keywords": ["javascript","compression","minification"], + "homepage": "https://github.com/nicolas-grekas/JSqueeze", + "license": "(Apache-2.0 or GPL-2.0)", + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com", + "role": "Developer" + } + ], + "require": { + "php": ">=5.1.4" + }, + "autoload": { + "psr-0": { + "JSqueeze": "class/" + } + } +}