模板中对静态文件自动加戳 进入全屏
模板文件
{% extends '../common/layout.html' %}
{% block content %}
<div id="adduplive"></div>
{% endblock %}
{% block foot %}
<script type="text/javascript" src="/bi/static/js/dist/adduplive/build.js"></script>
{% endblock %}
文件加戳脚本
# 给模板中的静态文件加戳
# 静态文件包括:js、css、jpg、png、gif、swf
function add_stamp(){
root_dir=$1
has_md5=$(whereis md5)
file_list=$(grep -ro 'static/.*\.\(js\|css\|jpg\|gif\|png\|swf\)\(?[^\s]*"\)\?' $root_dir/views | sed 's/"$//g' | cut -d ':' -f 2)
for f in $file_list;do
rf=$(echo $f | cut -d '?' -f 1 )
if [[ x"$has_md5" != x ]];then
stamp=$(md5 $root_dir/$rf | awk '{print $4}')
stamp=$(echo ${stamp:22})
else
stamp=$(date "+%s")
fi
tpl=$(grep -rl "$rf" $root_dir/views)
r="$rf?v=$stamp"
from=$(echo $f | sed -e 's/\//\\\//g' -e 's/\?/\\?/g')
to=$(echo $r | sed -e 's/\//\\\//g' -e 's/\?/\\?/g')
sed -i "" "s/$from/$to/g" $tpl
echo "在 `echo "$tpl" | awk -F"$root_dir/" '{print $2}'` 中扫描到静态文件引用,已加戳:$r"
done
}
扫描并加戳
# 对指定目录下的静态文件进行扫描加戳
add_stamp ../../../server/app/bi
结果
Alien-MacBook:deploy (f_xianlie*) $ ./stamp.sh
在 views/adduplive/index.html 中扫描到静态文件引用,已加戳:static/js/dist/adduplive/build.js?v=fd272aaef5
在 views/channel/index.html 中扫描到静态文件引用,已加戳:static/js/dist/channel/build.js?v=ac272baef1
在 views/common/layout.html 中扫描到静态文件引用,已加戳:static/css/common/lib.css?v=2ed8a66a06
在 views/common/layout.html 中扫描到静态文件引用,已加戳:static/js/lib/echarts.min.js?v=ad2adbd08d
在 views/common/layout.html 中扫描到静态文件引用,已加戳:static/js/lib/vue.js?v=df9919f8e8
在 views/common/layout.html 中扫描到静态文件引用,已加戳:static/js/lib/later.min.js?v=6088b1ee42
在 views/common/layout.html 中扫描到静态文件引用,已加戳:static/js/dist/common/build.js?v=46ee4404c6
在 views/common/layout.html 中扫描到静态文件引用,已加戳:static/js/lib/ip.js?v=b542ca0af3
html文件中该静态文件引用的地方会被自动替换,如:
<script type="text/javascript" src="/bi/static/js/dist/adduplive/build.js?v=fd272aaef5"></script>