用python给html里的css及js文件链接自动添加版本号

Posted axel10

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用python给html里的css及js文件链接自动添加版本号相关的知识,希望对你有一定的参考价值。

 

传统的给文件链接添加版本号的方法是使用gulp-rev,这里提出的解决方案是使用python来替代gulp-rev。

 

import os
import re
import uuid
import sys


def file_extension(path):
    return os.path.splitext(path)[1]


basePath = sys.argv[1]
if len(sys.argv)==1:
    sys.exit()


html_list = []


def find_html(path):
    files = os.listdir(path=path)

    for item in files:
        abs_path = os.path.join(path, item)
        if not os.path.isdir(abs_path) and file_extension(abs_path) == ".html":
            html_list.append(abs_path)

        if (os.path.isdir(abs_path)):
            find_html(abs_path)


def deal_html(html_list):
    for html_path in html_list:
        html_file = open(html_path, "r+", encoding=UTF-8)
        content = html_file.read()
        # print(html_file.read())
        # res = re.sub(r‘<link (.*) href="(.*)\.css".*>‘,r‘<link \1 href="\2\.css?v=1"\3>‘,content)
        res1 = re.sub(r<link (.*) href="(.*)\.css.*"(.*)>, lambda x: <link  + x.group(1) +  href=" + x.group(
            2) + .css?v= + uuid.uuid1().hex + " + x.group(3) + >, content)
        res2 = re.sub(r<script src="(.*)\.js.*"></script>,
                      lambda x: <script src=" + x.group(1) + .js?v= + uuid.uuid1().hex + "></script>, res1)
        html_file.seek(0)
        html_file.truncate()
        html_file.write(res2)
        html_file.close()


if __name__ == __main__:
    find_html(basePath)
    deal_html(html_list)

将以上代码另存成auto_version.py文件后,新建auto_version.bat文件,写入以下内容:

python ./auto_version.py "D:\your project dir"

修改好.bat文件里的路径后,双击运行即可。

以上是关于用python给html里的css及js文件链接自动添加版本号的主要内容,如果未能解决你的问题,请参考以下文章

网站后端_Python+Flask.0009.FLASK静态资源之默认及自定义资源目录?

初探css modules

谁会弄那种12345轮播图片 带链接的 用HTML语言能实现吗. 反正不能用JS.万恶的TX不让用JS. CSS好像可以

js怎么用

用纯js就可以写一个网页!为啥还要用html和css,为啥不把html及css舍去??有这发展

外部js怎么引用css?