使用gulp打版本号并且替换时重复替换

用gulp给静态文件打版本号,用的是这两个,已经按网上的方法修改过源码,版本号变为?v=xxxx了
clipboard.png

然后task配置是这样的
clipboard.png

拿js为例,html中一开始是这样的

clipboard.png

执行一次后变成这样,没毛病
clipboard.png

但是多次执行后,就会变成这样,版本号重复,并且路径也被替换了多次
clipboard.png

阅读 3.7k
3 个回答

gulp-rev-collector>index.js
40行:let cleanReplacement = path.basename(json[key]).replace(new RegExp( opts.revSuffix ), '' );
40行修改:let cleanReplacement = path.basename(json[key]).split('?')[0];
72行:return pattern.replace(/[\-\[\]\{\}\(\)\*\+\?\.\^\$\|\/\\]/g, "\\$&");
72行修改: var rp = pattern.replace(/[\-\[\]\{\}\(\)\*\+\?\.\^\$\|\/\\]/g, "\\$&"); rp = pattern + "(\\?v=(\\d|[a-z]){8,10})*";return rp;
126行:patterns.push( escPathPattern( (path.dirname(key) === '.' ? '' : closeDirBySep(path.dirname(key)) ) + path.basename(key, path.extname(key)) ) + opts.revSuffix + escPathPattern( path.extname(key) ) );
126行修改: patterns.push( escPathPattern( (path.dirname(key) === '.' ? '' : closeDirBySep(path.dirname(key)) ) + path.basename(key, path.extname(key)) ) + opts.revSuffix + escPathPattern( path.extname(key) ) + "(\\?v=(\\d|[a-z]){8,10})*" );

新手上路,请多包涵

我也遇到这个问题

修改下源码,将替换规则修改一下,判断要替换的字符串是否包含?v=,如果包含则不再进行替换。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题