JSを小さくする組み込みのPerl

javascriptファイルを小さくするためのモジュールの例

javascriptファイルを小さくすることでコンパクトになり、従ってダウンロードが早くなります。

ここで取得できるCPANからのperlモジュールを使います: http://search.cpan.org/~pmichaux/JavaScript-Minifier/

CSSのための小型化ライブラリは http://search.cpan.org/~pmichaux/CSS-Minifier-0.01/から利用可能です。

ここで、元のjsminについてもっと読むことができます: https://www.crockford.com/javascript/jsmin.html

nginx.conf

http {
  perl_modules perl;

  # Get this module from the CPAN and put the file in this directory.
  # or install it systemwide
  perl_require Javascript/Minifier.pm;
  perl_require Minify.pm;

  root /var/www;
  server {
    location / {
      index  index.html index.htm;
    }

    location ~ \.js$  {
      perl Minify::handler;
    }
  }
}

perl/Minify.pm

package Minify;
use nginx;
use JavaScript::Minifier qw(minify);

sub handler {
  my $r=shift;
  my $cache_dir="/tmp";  # Cache directory where minified files will be kept
  my $cache_file=$r->uri;
  $cache_file=~s!/!_!g;
  $cache_file=join("/", $cache_dir, $cache_file);
  my $uri=$r->uri;
  my $filename=$r->filename;

  return DECLINED unless -f $filename;

  if (! -f $cache_file) {
    open(INFILE, $filename) or die "Error reading file: $!";
    open(OUTFILE, '>' . $cache_file ) or die "Error writting file: $!";
    minify(input => *INFILE, outfile => *OUTFILE);
    close(INFILE);
    close(OUTFILE);
  }
  $r->send_http_header("application/javascript");
  $r->sendfile($cache_file);
  return OK;
}
1;
__END__
inserted by FC2 system