Technology Engineering

178inaba の技術ブログ

特定のディレクトリ内にあるjavascriptを全てMinifyする

例えば static/js ディレクトリにjsが置いてあるとする。

$ tree
.
└── static
    └── js
        ├── bar.js
        ├── baz.js
        └── foo.js

そのディレクトリ内にあるjavascriptを全てMinifyしたい場合のbashスクリプト

for f in $(ls static/js/*.js); do
  uglifyjs -cm -o "${f/.js/.min.js}" "${f}"
done

Minifyには uglify-js を使用する。
オプションの c が単純なソース圧縮、 m が変数名の圧縮(1文字にする)、 o はアウトプットするファイルを指定。

これを minify.sh というファイル名で作成し、実行する。
注意点としては ${f/.js/.min.js}bashの文字列置換を使用しているのでbashで実行すること。

$ bash minify.sh

すると全てのjavascriptがMinifyされる。

$ tree
.
├── minify.sh
└── static
    └── js
        ├── bar.js
        ├── bar.min.js
        ├── baz.js
        ├── baz.min.js
        ├── foo.js
        └── foo.min.js

ちなみにMinifyしたjavascriptをgit管理したくない場合は .gitignore*.min.js を入れると無視してくれる。

もうひと工夫

シバンを入れて実行権限をつけるとスッキリして良い。
実行権限をつけるのでファイル名も minify にすると綺麗かも。

#!/bin/bash

for f in $(ls static/js/*.js); do
  uglifyjs -cm -o "${f/.js/.min.js}" "${f}"
done
$ mv minify.sh minify
$ chmod u+x minify
$ ./minify
$ tree
.
├── minify
└── static
    └── js
        ├── bar.js
        ├── bar.min.js
        ├── baz.js
        ├── baz.min.js
        ├── foo.js
        └── foo.min.js

参考