Revision: 37786
Updated Code
at January 21, 2011 18:39 by iroybot
Updated Code
<?php
/**
my scripts and the order of the scripts are stored in a simple XML file (static.scripts.xml):
<group>
<item>jquery.js</item>
<item>jquery.easing.js</item>
<item>scrollable.js</item>
<item>scrollable.autoscroll.js</item>
<item>pointbar.js</item>
<item>jquery.actions.js</item>
</group>
**/
class JSCompiler {
public $scriptpath = '/js/';
public $tmppath = '/js/cache/';
public $tmpname;
public $compiler = '/js/jscompiler/compiler.jar';
public $output = '/js/scripts.min.js';
public function JSCompiler() {
$this->tmpname = "joined-".time().".js";
$this->output = $_SERVER["DOCUMENT_ROOT"].$this->output;
$this->getScripts();
}
/**
* reads all Javascript files from XML, joins them and saves a temp file in /js/cache
* @return void
*/
public function getScripts() {
$scripts = new DOMDocument();
$tmp = file_get_contents('/static.scripts.xml');
// load script names
$scripts->loadXML($tmp);
// get each files contents
$xpath = new DOMXPath($scripts);
$res = $xpath->query("//item");
$jsString = '';
foreach($res as $item) {
$filename = $item->nodeValue;
if (file_exists($_SERVER["DOCUMENT_ROOT"]."/js/$filename")) {
$jsString .= file_get_contents($_SERVER["DOCUMENT_ROOT"]."/js/$filename"); // join them together
} else {
echo "file <samp>$filename</samp> not found!";
}
}
if (!is_dir($_SERVER["DOCUMENT_ROOT"].$this->tmppath)) {
echo $this->tmppath." doesn't exist";
} else {
file_put_contents($_SERVER["DOCUMENT_ROOT"].$this->tmppath.$this->tmpname, $jsString); // save temp. file
}
}
/**
* fires the command to run Google Closure Compiler
* @uses the temporary file created by getScipts()
* @return string error message
*/
public function compile($output = '', $level = '') {
if ($output === '') $output = $this->output;
if ($level === '') $level = 'ADVANCED_OPTIMIZATIONS';
$compiler = $this->compiler;
if (file_exists($_SERVER["DOCUMENT_ROOT"].$this->tmppath.$this->tmpname)) {
$compilerCommand = "/usr/bin/java -jar $compiler --compilation_level $level --jscomp_dev_mode START --js " . $_SERVER["DOCUMENT_ROOT"].$this->tmppath.$this->tmpname . " --js_output_file $output 2>&1";
exec($compilerCommand, $return, $code);
if ($code != 0) {
return sprintf("Fuck! Something went wrong: %s (%s)", join('<br />', $return), $code);
} else {
return "compiled successfully";
}
} else {
return "tempfile not found.";
}
}
}
Revision: 37785
Updated Code
at December 17, 2010 02:44 by iroybot
Updated Code
<?php
/**
my scripts and the order of the scripts are stored in a simple XML file (static.scripts.xml):
<group>
<item>jquery.js</item>
<item>jquery.easing.js</item>
<item>scrollable.js</item>
<item>scrollable.autoscroll.js</item>
<item>jquery.actions.js</item>
<item>jquery-ui-1.8.6.custom.min.js</item>
<item>pointbar.js</item>
</group>
**/
class JSCompiler {
public $scriptpath = '/js/';
public $tmppath = '/js/cache/';
public $tmpname;
public $compiler = '/js/jscompiler/compiler.jar';
public $output = '/js/scripts.min.js';
public function JSCompiler() {
$this->tmpname = "joined-".time().".js";
$this->output = $_SERVER["DOCUMENT_ROOT"].$this->output;
$this->getScripts();
}
/**
* reads all Javascript files from XML, joins them and saves a temp file in /js/cache
* @return void
*/
public function getScripts() {
$scripts = new DOMDocument();
$tmp = file_get_contents('/static.scripts.xml');
// load script names
$scripts->loadXML($tmp);
// get each files contents
$xpath = new DOMXPath($scripts);
$res = $xpath->query("//item");
$jsString = '';
foreach($res as $item) {
$filename = $item->nodeValue;
if (file_exists($_SERVER["DOCUMENT_ROOT"]."/js/$filename")) {
$jsString .= file_get_contents($_SERVER["DOCUMENT_ROOT"]."/js/$filename"); // join them together
} else {
echo "file <samp>$filename</samp> not found!";
}
}
if (!is_dir($_SERVER["DOCUMENT_ROOT"].$this->tmppath)) {
echo $this->tmppath." doesn't exist";
} else {
file_put_contents($_SERVER["DOCUMENT_ROOT"].$this->tmppath.$this->tmpname, $jsString); // save temp. file
}
}
/**
* fires the command to run Google Closure Compiler
* @uses the temporary file created by getScipts()
* @return string error message
*/
public function compile($output = '', $level = '') {
if ($output === '') $output = $this->output;
if ($level === '') $level = 'ADVANCED_OPTIMIZATIONS';
$compiler = $this->compiler;
if (file_exists($_SERVER["DOCUMENT_ROOT"].$this->tmppath.$this->tmpname)) {
$compilerCommand = "/usr/bin/java -jar $compiler --compilation_level $level --jscomp_dev_mode START --js " . $_SERVER["DOCUMENT_ROOT"].$this->tmppath.$this->tmpname . " --js_output_file $output 2>&1";
exec($compilerCommand, $return, $code);
if ($code != 0) {
return sprintf("Fuck! Something went wrong: %s (%s)", join('<br />', $return), $code);
} else {
return "compiled successfully";
}
} else {
return "tempfile not found.";
}
}
}
Revision: 37784
Updated Code
at December 17, 2010 02:43 by iroybot
Updated Code
<?php
/**
my scripts and the order of the scripts are stored in a simple XML file (static.scripts.xml):
<group>
<item>jquery.js</item>
<item>jquery.easing.js</item>
<item>scrollable.js</item>
<item>scrollable.autoscroll.js</item>
<item>jquery.actions.js</item>
<item>jquery-ui-1.8.6.custom.min.js</item>
<item>pointbar.js</item>
</group>
**/
class JSCompiler {
public $scriptpath = '/js/';
public $tmppath = '/js/cache/';
public $tmpname;
public $compiler = '/js/jscompiler/compiler.jar';
public $output = '/js/scripts.min.js';
public function Royal_JSCompiler() {
$this->tmpname = "joined-".time().".js";
$this->output = $_SERVER["DOCUMENT_ROOT"].$this->output;
$this->getScripts();
}
/**
* reads all Javascript files from XML, joins them and saves a temp file in /js/cache
* @return void
*/
public function getScripts() {
$scripts = new DOMDocument();
$tmp = file_get_contents('/static.scripts.xml');
// load script names
$scripts->loadXML($tmp);
// get each files contents
$xpath = new DOMXPath($scripts);
$res = $xpath->query("//item");
$jsString = '';
foreach($res as $item) {
$filename = $item->nodeValue;
if (file_exists($_SERVER["DOCUMENT_ROOT"]."/js/$filename")) {
$jsString .= file_get_contents($_SERVER["DOCUMENT_ROOT"]."/js/$filename"); // join them together
} else {
echo "file <samp>$filename</samp> not found!";
}
}
if (!is_dir($_SERVER["DOCUMENT_ROOT"].$this->tmppath)) {
echo $this->tmppath." doesn't exist";
} else {
file_put_contents($_SERVER["DOCUMENT_ROOT"].$this->tmppath.$this->tmpname, $jsString); // save temp. file
}
}
/**
* fires the command to run Google Closure Compiler
* @uses the temporary file created by getScipts()
* @return string error message
*/
public function compile($output = '', $level = '') {
if ($output === '') $output = $this->output;
if ($level === '') $level = 'ADVANCED_OPTIMIZATIONS';
$compiler = $this->compiler;
if (file_exists($_SERVER["DOCUMENT_ROOT"].$this->tmppath.$this->tmpname)) {
$compilerCommand = "/usr/bin/java -jar $compiler --compilation_level $level --jscomp_dev_mode START --js " . $_SERVER["DOCUMENT_ROOT"].$this->tmppath.$this->tmpname . " --js_output_file $output 2>&1";
exec($compilerCommand, $return, $code);
if ($code != 0) {
return sprintf("Fuck! Something went wrong: %s (%s)", join('<br />', $return), $code);
} else {
return "compiled successfully";
}
} else {
return "tempfile not found.";
}
}
}
Revision: 37783
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 17, 2010 02:41 by iroybot
Initial Code
<?php
class Royal_JSCompiler {
public $scriptpath = '/js/';
public $tmppath = '/js/cache/';
public $tmpname;
public $compiler = '/js/jscompiler/compiler.jar';
public $output = '/js/scripts.min.js';
public function Royal_JSCompiler() {
$this->tmpname = "joined-".time().".js";
$this->output = $_SERVER["DOCUMENT_ROOT"].$this->output;
$this->getScripts();
}
/**
* reads all Javascript files from XML, joins them and saves a temp file in /js/cache
* @return void
*/
public function getScripts() {
$scripts = new DOMDocument();
$tmp = file_get_contents('/static.scripts.xml');
// load script names
$scripts->loadXML($tmp);
// get each files contents
$xpath = new DOMXPath($scripts);
$res = $xpath->query("//item");
$jsString = '';
foreach($res as $item) {
$filename = $item->nodeValue;
if (file_exists($_SERVER["DOCUMENT_ROOT"]."/js/$filename")) {
$jsString .= file_get_contents($_SERVER["DOCUMENT_ROOT"]."/js/$filename"); // join them together
} else {
echo "file <samp>$filename</samp> not found!";
}
}
if (!is_dir($_SERVER["DOCUMENT_ROOT"].$this->tmppath)) {
echo $this->tmppath." doesn't exist";
} else {
file_put_contents($_SERVER["DOCUMENT_ROOT"].$this->tmppath.$this->tmpname, $jsString); // save temp. file
}
}
/**
* fires the command to run Google Closure Compiler
* @uses the temporary file created by getScipts()
* @return string error message
*/
public function compile($output = '', $level = '') {
if ($output === '') $output = $this->output;
if ($level === '') $level = 'ADVANCED_OPTIMIZATIONS';
$compiler = $this->compiler;
if (file_exists($_SERVER["DOCUMENT_ROOT"].$this->tmppath.$this->tmpname)) {
$compilerCommand = "/usr/bin/java -jar $compiler --compilation_level $level --jscomp_dev_mode START --js " . $_SERVER["DOCUMENT_ROOT"].$this->tmppath.$this->tmpname . " --js_output_file $output 2>&1";
exec($compilerCommand, $return, $code);
if ($code != 0) {
return sprintf("Fuck! Something went wrong: %s (%s)", join('<br />', $return), $code);
} else {
return "compiled successfully";
}
} else {
return "tempfile not found.";
}
}
}
Initial URL
Initial Description
ported to PHP5 from this tutorial: http://bohuco.net/blog/2010/09/use-google-closure-compiler-local-with-php/ since I had problems running the compiler on mutliple files, I did the joining myself.
Initial Title
Compiling JS with Closure Compiler and PHP
Initial Tags
Initial Language
PHP