Advertisement
Guest User

HTML/CSS/JS Minification, Perl module

a guest
Oct 24th, 2013
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.70 KB | None | 0 0
  1. package Minify;
  2. use nginx;
  3. use JavaScript::Minifier::XS;
  4. use CSS::Minifier::XS;
  5. use HTML::Packer;
  6.  
  7. sub css_handler {
  8.     my $r = shift;
  9.     my $cache_file = $r->filename . ".min.css";
  10.     my $filename = $r->filename;
  11.     local $/=undef;
  12.  
  13.     return DECLINED unless -f $filename;
  14.  
  15.     open(INFILE, $filename) or die "Error reading file: $!";
  16.     my $css = <INFILE>;
  17.     close(INFILE);
  18.  
  19.     open(OUTFILE, '>' . $cache_file) or die "Error writing file: $!";
  20.     print OUTFILE CSS::Minifier::XS::minify($css);
  21.     close(OUTFILE);
  22.  
  23.     $r->send_http_header('text/css');
  24.     $r->sendfile($cache_file);
  25.     return OK;
  26. }
  27.  
  28. sub js_handler {
  29.     my $r = shift;
  30.     my $cache_file = $r->filename . ".min.js";
  31.     my $filename = $r->filename;
  32.     local $/=undef;
  33.  
  34.     return DECLINED unless -f $filename;
  35.  
  36.     open(INFILE, $filename) or die "Error reading file: $!";
  37.     my $js = <INFILE>;
  38.     close(INFILE);
  39.  
  40.     open(OUTFILE, '>' . $cache_file) or die "Error writing file: $!";
  41.     print OUTFILE JavaScript::Minifier::XS::minify($js);
  42.     close(OUTFILE);
  43.  
  44.     $r->send_http_header('application/javascript');
  45.     $r->sendfile($cache_file);
  46.     return OK;
  47. }
  48.  
  49. sub html_handler {
  50.     my $r = shift;
  51.     my $cache_file = $r->filename . ".min.html";
  52.     my $filename = $r->filename;
  53.     local $/=undef;
  54.  
  55.     return DECLINED unless -f $filename;
  56.  
  57.     open(INFILE, $filename) or die "Error reading file: $!";
  58.     my $html = <INFILE>;
  59.     close(INFILE);
  60.  
  61.     open(OUTFILE, '>' . $cache_file) or die "Error writing file: $!";
  62.     print OUTFILE HTML::Packer::minify($html, {remove_comments => 1, remove_newlines => 1, no_compress_comment => 1, html5 => 1, do_javascript => 'clean', do_stylesheet => 'minify'});
  63.     close(OUTFILE);
  64.  
  65.     $r->send_http_header('text/html');
  66.     $r->sendfile($cache_file);
  67.     return OK;
  68. }
  69.  
  70. 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement