特定のディレクトリ内にある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