A Google néhány hónapja kihozta a Closure Compiler nevű JavaScript forráskód tömörítő (és gyorsító) eszközét, ami véleményem szerint gond nélkül felveszi a versenyt a többi hasonló célra készített programmal.
Vannak benne jó ötletek:
- if (a) { b(); } -> a && b();
- if (a) { b(); } else { c(); } -> a?b():c();
- var a = 60*60*5; -> var a=18E3;
- var a; var b; -> var a,b;
Az alábbi PHP scripttel a saját kódjainkat online összetömöríthetjük:
$minFileName = 'my.min.js';
$data = array(
'output_info' => 'compiled_code',
'output_format' => 'text',
'compilation_level' => 'SIMPLE_OPTIMIZATIONS',
'js_code' => file_get_contents($fileName),
'warning_level' => 'default'
);
$postfields = array();
foreach (array_keys($data) as $i) {
$postfields[] = $i . '=' . urlencode($data[$i]);
}
$ch = curl_init('http://closure-compiler.appspot.com/compile');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, join('&', $postfields));
$result = curl_exec($ch);
curl_close($ch);
file_put_contents($minFileName, trim($result));
Ha szükségünk van részletes eredményre (figyelmeztetések, hibák, statisztikák), akkor a választ JSON formában is lekérhetjük az előbb említett adatokkal együtt:
'output_info' => 'compiled_code,warnings,statistics,errors',
'output_format' => 'json',
'compilation_level' => 'SIMPLE_OPTIMIZATIONS',
'js_code' => file_get_contents($fileName),
'warning_level' => 'default'
);
$postfields = array();
foreach (array_keys($data) as $i) {
if ($i === 'output_info') {
foreach (explode(',', $data[$i]) as $info) {
$postfields[] = $i . '=' . $info;
}
} else {
$postfields[] = $i . '=' . urlencode($data[$i]);
}
}
$ch = curl_init('http://closure-compiler.appspot.com/compile');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, join('&', $postfields));
$result = curl_exec($ch);
curl_close($ch);
var_dump(json_decode($result));