不自重者,取辱。不自长者,取祸。不自满者,受益。不自足者,博闻。
模板中对静态文件自动加戳 进入全屏
line

模板文件

{% 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>
趣店(原趣分期)技术学院
重点关注技术架构、服务化、优秀工具、自动化平台、开发全流程一体化解决方案、新人培养、工程师进阶之道等方面
这里环境优雅、氛围年轻、主要是福利还多,还等什么?我们敞开技术的大门,欢迎各种工程师加入!

评论区域

line