用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文件里的路径后,双击运行即可。

原文地址:https://www.cnblogs.com/axel10/p/8447184.html

时间: 2024-08-21 15:14:46

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

使用gulp自动化打包合并前端静态资源(CSS、JS文件压缩、添加版本号)

现在正在做的项目更新迭代比较频繁,会经常对前端代码打包部署,手动整合代码文件很麻烦并且浪费时间,所以决定使用gulp来代替手工完成这项工作. 前端静态资源在发版更新时会面临客户端浏览器缓存的问题(可参考这篇文章),解决这个问题可以采用两类方法:覆盖方法(引用资源时加版本号,不修改资源文件名).非覆盖方法(修改资源文件名),本篇文章主要采用的是第一种加版本号的方式,主要用gulp给静态资源自动加版本号和压缩CSS.JS. 原理:通过对JS,CSS文件内容进行Hash运算,生成一个文件的唯一Hash

asp.net使用httphandler打包多CSS或JS文件以加快页面加载速度

介绍 使用许多小得JS.CSS文件代替一个庞大的JS或CSS文件来让代码获得更好的可维 护性,这是一个很好的实践.但这样做反过来却损失了网站的性能.虽然你应该将你的Javascript代码写在小文件中并且将大的CSS文件分割到小文件 中,当一个浏览器请求那些JS以及CSS文件,它却将为每一个文件产生一个请求.每一个HTTP请求将导致从你的浏览器到服务器上的一次"往返",从响应 服务器到客户端浏览器之间的等待时间称之为"延时".因此,如果你有四个JS文件以及三个CSS

解决MVC中使用BundleConfig.RegisterBundles引用Css及js文件发布后丢失的问题

ASP.NET MVC4,ASP.NET MVC5中对JS和CSS的引用又做了一次变化,在MVC3中我们这样引用资源文件: <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 将在运行的时候自动将虚拟(相对)路径转换为应用程序绝对路径.这是比较传统的引用方式,尽管他做了一次转换操作,对服务器的请求数量

CI框架引入外部css和js文件

首先在项目根目录下建立assets文件夹,在这个文件夹下再建立css和js文件夹分别放置css和js文件 然后,在项目根目录下建立.htaccess文件 内容如下: RewriteEngine on      RewriteCond $1 !^(index\.php|images|robots\.txt|js|css|upimg|artDialog|style|sphinx_auth|assets)      RewriteRule ^(.*)$ index.php/$1 [L] 把上面的ass

CSS和JS去掉链接虚线框的多种方法

当我们点击链接后,链接周围会显示一个虚线框,那么怎么去掉这个虚线框呢?其实方法还挺多,用CSS就可以,但使用javaScript似乎也是一个好方法. 1. CSS方式去掉链接虚线框的方法: 在IE下是使用html属性:hideFoucs,在HTML标签中加上hidefocus="true" 属性即可,但这个属性是IE私有的,Firefox是不认的.前端框架示例 .代码   <a href="#" hidefocus="true" title

django 解决css,js文件304导致无法加载显示问题

这种情况一般会在windows系统下出现 1.前台.后台如果无法加载css等样式.(建议通过此办法来解决) 这是因为你安装的某些IDE 或者其他更改了注册表导致的系统的注册表\HKEY_CLASSES_ROOT\.css的Content Type不是text/css,修改即可.改完记得重启开发服务器并按Ctrl+F5强制刷新页面. 2.前台如果无法加载css等样式.(如果你的后台没问题那就试试这个简单方法) 前提:django1.8 在html页面可以请求道css,js文件并在chrome的开发

JQuery 加载 CSS、JS 文件的方法有哪些?

在进行web前端开发(http://www.maiziedu.com/course/web-px/)时,我们可能会需要使用JQuery加载一个外部的css文件或者js文件,加载外部文件的方法有多种,下面具体看看各种加载方法 JS 方式加载 CSS.JS 文件: //加载 css 文件function includeCss(filename) { var head = document.getElementsByTagName('head')[0]; var link = document.cre

关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件

找了这么久资料,总算解决了 感谢博客园:http://www.cnblogs.com/xsht/p/5275081.html 感谢百度:http://zhidao.baidu.com/link?url=Vz4TlygvnMyYVj105bCuzkusjF0G5rM6opHvEzhcCaJK5s1gFUZ3PBgAWCNsfY1RmtPf4ZEo8EV_Gd7SYKV4S_ 在有Struts部署的Java EE环境中,我们一般把jsp页面写在WebRoot\WEB-INF\content 目录下,

实际项目中,为什么多个css、js文件要实现合并与压缩?(了解了这你才算入门)

Web性能优化最佳实践中最重要的一条是减少HTTP请求.而减少HTTP请求的最主要的方式就是,合并并压缩JavaScript和CSS文件. 关于编写css时,我们应注意通过一些细节来控制css文件的大小,比如:全局样式.继承样式.缩写样式,空格.注释等:同时你也可以通过在线工具对你的css文件进行压缩,来减少css文件的大小,但压缩后的css文件在可维护性.识别性方面变的特别弱.但更复杂的情况是,如果你的页面里面引用了多个css.多个js文件时就可能处理不好. 多个css.多个js文件进行自动合