mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-05-11 13:02:15 +09:00
Initial implementation of auto-minify
This commit is contained in:
parent
422e0657e0
commit
6a08c10f2d
3 changed files with 39 additions and 19 deletions
|
|
@ -155,34 +155,54 @@ class FrontEndFileHandler extends Handler
|
||||||
$file->filePath = $this->_getAbsFileUrl($pathInfo['dirname']);
|
$file->filePath = $this->_getAbsFileUrl($pathInfo['dirname']);
|
||||||
$file->fileRealPath = FileHandler::getRealPath($pathInfo['dirname']);
|
$file->fileRealPath = FileHandler::getRealPath($pathInfo['dirname']);
|
||||||
$file->fileExtension = strtolower($pathInfo['extension']);
|
$file->fileExtension = strtolower($pathInfo['extension']);
|
||||||
$file->fileNameNoExt = preg_replace('/\.min$/', '', $pathInfo['filename']);
|
if(preg_match('/^(.+)\.min$/', $pathInfo['filename'], $matches))
|
||||||
$file->keyName = implode('.', array($file->fileNameNoExt, $file->fileExtension));
|
|
||||||
$file->cdnPath = $this->_normalizeFilePath($pathInfo['dirname']);
|
|
||||||
|
|
||||||
if(strpos($file->filePath, '://') === FALSE)
|
|
||||||
{
|
{
|
||||||
if(!__DEBUG__ && __XE_VERSION_STABLE__)
|
$file->fileNameNoExt = $matches[1];
|
||||||
{
|
$file->isMinified = true;
|
||||||
// if no debug mode, load minifed file
|
|
||||||
$minifiedFileName = implode('.', array($file->fileNameNoExt, 'min', $file->fileExtension));
|
|
||||||
$minifiedRealPath = implode('/', array($file->fileRealPath, $minifiedFileName));
|
|
||||||
if(file_exists($minifiedRealPath))
|
|
||||||
{
|
|
||||||
$file->fileName = $minifiedFileName;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Remove .min
|
$file->fileNameNoExt = $pathInfo['filename'];
|
||||||
if(file_exists(implode('/', array($file->fileRealPath, $file->keyName))))
|
$file->isMinified = false;
|
||||||
|
}
|
||||||
|
$file->keyName = $file->fileNameNoExt . '.' . $file->fileExtension;
|
||||||
|
$file->cdnPath = $this->_normalizeFilePath($pathInfo['dirname']);
|
||||||
|
|
||||||
|
// Minify file
|
||||||
|
if(!__DEBUG__ && __XE_VERSION_STABLE__ && !$file->isMinified && strpos($file->filePath, '://') === false && strpos($file->filePath, 'common/js/plugins') === false)
|
||||||
{
|
{
|
||||||
$file->fileName = $file->keyName;
|
$originalFilePath = $file->fileRealPath . '/' . $pathInfo['basename'];
|
||||||
|
if(($file->fileExtension === 'css' || $file->fileExtension === 'js') && file_exists($originalFilePath))
|
||||||
|
{
|
||||||
|
$minifiedFileName = $file->fileNameNoExt . '.min.' . $file->fileExtension;
|
||||||
|
$minifiedFileHash = substr(sha1($file->cdnPath . $file->fileName), 0, 24);
|
||||||
|
$minifiedFilePath = _XE_PATH_ . 'files/cache/minify/' . $minifiedFileHash . '.' . $minifiedFileName;
|
||||||
|
|
||||||
|
if(!file_exists($minifiedFilePath) || filemtime($minifiedFilePath) < filemtime($originalFilePath))
|
||||||
|
{
|
||||||
|
FileHandler::makeDir(_XE_PATH_ . 'files/cache/minify');
|
||||||
|
if($file->fileExtension === 'css')
|
||||||
|
{
|
||||||
|
$minifier = new MatthiasMullie\Minify\CSS($originalFilePath);
|
||||||
|
$minifier->minify($minifiedFilePath);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$minifier = new MatthiasMullie\Minify\JS($originalFilePath);
|
||||||
|
$minifier->minify($minifiedFilePath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$file->fileName = $minifiedFileHash . '.' . $minifiedFileName;
|
||||||
|
$file->filePath = $this->_getAbsFileUrl('./files/cache/minify');
|
||||||
|
$file->fileRealPath = _XE_PATH_ . 'files/cache/minify';
|
||||||
|
$file->cdnPath = $this->_normalizeFilePath('./files/cache/minify');
|
||||||
|
$file->isMinified = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Process targetIe and media attributes
|
||||||
$file->targetIe = $targetIe;
|
$file->targetIe = $targetIe;
|
||||||
|
|
||||||
if($file->fileExtension == 'css')
|
if($file->fileExtension == 'css')
|
||||||
{
|
{
|
||||||
$file->media = $media;
|
$file->media = $media;
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
<load target="../../../common/js/foggyLayer.js" />
|
<load target="../../../common/js/plugins/foggyLayer/foggyLayer.js" />
|
||||||
{$layout_tpl}
|
{$layout_tpl}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue