模板中对静态文件自动加戳 进入全屏
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>
阿里巴巴-钉钉-开放平台,能力开放&开发者运营岗位招聘中, 期待你的加入!
钉钉开放,让应用开发更简单
充分开放,是钉钉的重要方向!除致力于为开发者打造丰富的开放API, 更易接入的场景化能力包, 完备的应用开发工具之外, 还需要持续构建开放能力的布道、开发者生态运营体系,包括培训、沙龙、大会、社区合作等等。业务在快速发展,我们也还需要更多优秀的小伙伴加入!

评论区域

line