javascript - 带有模式的 grunt-usemin 仅替换第一个匹配项

标签 javascript regex grunt-usemin

我的 gruntfile 中有以下内容:

usemin: {
    html: ['<%= yeoman.dist %>/**/*.html'],
    css: ['<%= yeoman.dist %>/styles/**/*.css'],
    js: ['<%= yeoman.dist %>/scripts/**/*.js'],
    options: {
        assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/styles/**/*'],
        patterns: {
            js: [
                [/css:["']styles\/?.*\/(.*\.css)['"]/g, 'revved css resolves']
            ]
        }
    }
}

这就是我想要的,给定一个引用了 revved css 文件的 javascript 文件,它会替换出现的事件。但只是第一次出现。我需要它在全局范围内工作(因此需要“/g”修饰符。有什么线索吗?

输入是一个大致如下的文件:

foo:{includes:{css:"styles/something.css"}},bar:{includes:{css:"styles/something.css"}}

我最终得到的是(假设 0123456 是来自 rev 的散列):

foo:{includes:{css:"styles/0123456.something.css"}},bar:{includes:{css:"styles/something.css"}}

我想要的是:

foo:{includes:{css:"styles/0123456.something.css"}},bar:{includes:{css:"styles/0123456.something.css"}}

谢谢。

最佳答案

我的正则表达式太贪心了,我通过用 /css:"styles\/?[A-Za-z]*\/+([A-Za-z0-9] +\.css)"}/g 现在我又回来了。

关于javascript - 带有模式的 grunt-usemin 仅替换第一个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24556775/

相关文章:

php - Controller 操作被调用两次 --- Php 应用程序

python - 仅在第一个实例中使用正则表达式使用多个分隔符分隔

gruntjs - 使用定义自定义步骤选项

javascript - Angular如何引用dist中的图片资源

ruby - 如何在 gsub 中将数字与正则表达式匹配并插入一个值?

javascript - 在对象数组中查找具有 `id` 属性最大值的对象

javascript - AngularJS 1.5 在获取 Controller 值之前打印的组件

javascript - DataTables 1.9.4 禁用特定行的排序

c# - 如何解析这个?