从字符串 css/main.min-1.2.0.css
开始,我尝试在每次版本更新时使用 Gulp 动态替换 HTML 中的版本号。
下面的正则表达式与版本号匹配,但是我需要将版本号与前置字符串相匹配,以确保更新正确。
/\b\d+(?:\.\d+)*\b/
理想情况下,正则表达式应匹配此起始字符串和文件扩展名,并替换版本号 1.0.0
。
css/main.min-1.0.0.css
编辑
接下来,我正在努力解决为什么以下失败似乎与双引号有关!
var string = '<link rel="stylesheet" href="https://example.com/css/main.min-1.0.0.css">';
string.replace(/css\/main[.]min-(?:\d[.]?)+css$/g, 'css/main.min-1.1.1.css');
最佳答案
感谢评论中的@Guedes,现在的答案如下,替换了整个内容而不仅仅是版本控制。
replace(/css\/main[.]min-(?:\d[.]?)+css$/g, 'css/main.min-' + pkg.version + '.css')
编辑
在下面解决,例如作为一个 gulp 任务供其他人使用。
gulp.task('versioned-paths', function(){
gulp.src(['public/**/*.html', 'public/**/*.php'])
.pipe(replace(/css\/main\.min-(?:\d\.\d\.\d)\.css/g, 'css/main.min-' + pkg.version + '.css'))
.pipe(replace(/js\/env\.min-(?:\d\.\d\.\d)\.js/g, 'js/env.min-' + pkg.version + '.js'))
.pipe(replace(/js\/main\.min-(?:\d\.\d\.\d)\.js/g, 'js/main.min-' + pkg.version + '.js'))
.pipe(gulp.dest('public/'));
});
关于javascript - JS 正则表达式替换文件名中的版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40472058/