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