Selamlar,
CSS, JS gibi assetleri Elixir ile hallediyorum.
Merak ettiğim ise render edilen HTML dosyalarını sıkıştırmak için en ideal yol hangisidir.
Elamanın biri şöyle bir öneri sunmuş:
App::after(function($request, $response)
{
// HTML Minification
if(App::Environment() != 'local')
{
if($response instanceof Illuminate\Http\Response)
{
$output = $response->getOriginalContent();
// Clean comments
$output = preg_replace('/<!--([^\[|(<!)].*)/', '', $output);
$output = preg_replace('/(?<!\S)\/\/\s*[^\r\n]*/', '', $output);
// Clean Whitespace
$output = preg_replace('/\s{2,}/', '', $output);
$output = preg_replace('/(\r?\n)/', '', $output);
$response->setContent($output);
}
}
});
Mantığı gayet basit. Bu mantığı bir middleware class'a dönüştürülüp istenilen yollar üzerinden kullanılabilir.
laravel-html-minify eklentisini yazan kişi, JS ile sıkıştırmayı da önermiş alternatif olarak.
GulpJS görevi:
var htmlmin = require('gulp-htmlmin');
var gulp = require('gulp');
gulp.task('compress', function() {
var opts = {
collapseWhitespace: true,
removeAttributeQuotes: true,
removeComments: true,
minifyJS: true
};
return gulp.src('./storage/framework/views/**/*')
.pipe(htmlmin(opts))
.pipe(gulp.dest('./storage/framework/views/'));
});
Ama GulpJS ile sıkıştırma bana mantıksız geldi. Zira tüm blade dosyalarının render edildiğinden emin olmanız gerekiyor. Belki bu gulp görevini çağıran bir job yazılabilir. Ama bu durumda sunucuya gulp ile gelen onlarca eklenti kurulması gerekecek..
Bir de şu eklentiler var ..
https://github.com/fitztrev/laravel-html-minify
https://github.com/GrahamCampbell/Laravel-HTMLMin
Bu konu hakkında deneyimleri olanlardan tavsiye bekliyorum...