ウェブサイトをできるだけ効率的にしたいと思っています。その一環として、CSSファイルとJavaScriptファイルを縮小しています。私の目標は、縮小されていないファイルを開発で使用できるようにすることですが、縮小されたファイルは本番環境で使用できるようにすることです。したがって、私の考えでは、縮小されていないファイル名は通常(foo.css)であり、縮小されたファイル名は同じで、先頭にアンダースコア(_foo.css)が付いているだけです。
開発環境では縮小ファイルを使用しないため、縮小ファイルを最新の状態に保つことを心配する必要はありません。それらが生成されるのは、WebサイトのGitリポジトリにコミットするときだけです。したがって、Gitフックにするのは理にかなっています。これは私がこれまでに行ったことのないことです。このフックを同僚にも配置したいと思います。私はMacを使用していて、Linuxを使用しています。シェルスクリプトは機能していますが、Gitフックとして使用したり、同僚が使用したりするには、変更が必要なことが2つあります。これらの2つのことは私が助けを必要としているものです。しかし、最初に、コード:
#!/bin/bash
# The files to ignore are already minified.
css_files_to_ignore=(
"jquery.colorbox-min.css"
);
js_files_to_ignore=(
"jquery.colorbox-min.js"
);
base_folder=/Applications/MAMP/htdocs/my_project/app/webroot
yuicompressor_path=/Applications/yuicompressor.jar
function process_assets() {
extension=$1
files_minified=0
for infile in $(echo "$base_folder/$extension/*.$extension")
do
[[ -f $infile ]] || continue
filename=${infile##*/}
# If the filename starts with an underscore, that means that the file is a
# minified file that was previously generated.
[[ ${filename:0:1} != "_" ]] || continue
ignore_this_file=false
files_to_ignore=$extension"_files_to_ignore"
for i in $(eval echo \${$files_to_ignore[@]})
do
if [[ $i == $filename ]]; then
ignore_this_file=true
break
fi
done
if [ $ignore_this_file == false ]; then
minified_file="$base_folder/$extension/_$filename"
if [ ! -f "$minified_file" ] || test $infile -nt $minified_file; then
java -jar $yuicompressor_path "$infile" -o "$minified_file"
((files_minified++))
fi
fi
done
if [ $extension == "css" ]; then
file_type=CSS
else
file_type=JavaScript
fi
echo -n "$files_minified $file_type file"
if [ "$files_minified" == "1" ]; then
echo -n " was"
else
echo -n "s were"
fi
echo " minified"
}
if [ -f $yuicompressor_path ]; then
process_assets css
process_assets js
else
echo "YUI Compressor was not found. Aborting."
exit 1
fi
最初に助けが必要なのは、base_folder
変数の処理方法です。これはGitフックになるので、この変数はどのように設定する必要がありますか?コミットが行われたときの現在の作業ディレクトリはスクリプトに影響しますか?
次に助けが必要なのは、yuicompressor_path
変数の処理方法です。前に言ったように、私はMacを使用しており、同僚はLinuxを使用しています。可能であれば、Gitフックが私たち全員のために機能することを望んでいます。私たち全員にとってうまくいく方法でその変数を設定できますか?
ありがとうございました!