javascript - JS 正则表达式替换文件名中的版本号

标签 javascript regex gulp

从字符串 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/

相关文章:

javascript - 不使用 .pipe() 调用 gulp-notify

css - 如何在构建语义 ui 时生成多个 semantic.<theme>.min.css 文件?

javascript - lodash - 链接过滤器和 forEach

javascript - 通过JS检测div的第一个和最后一个子元素是否有类变化

javascript:从复杂的id字符串中提取数组索引

Python 反向引用替换不能按预期工作

javascript - 如何在 html css 技巧中单击按钮时显示和隐藏 div?

javascript - 是否可以使用 Service Worker API 缓存整个 HTML5 视频以供离线使用?

c# - 查找可以用给定字母集拼写的单词集

javascript - 如何在 gulp 中正确包含 requirejs 和 React & JSX