带模式的grunt-usemin只替换第一个匹配

时间:2014-07-03 14:40:54

标签: 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']
            ]
        }
    }
}

我想要的是什么,给定一个引用了加速的css文件的javascript文件,它会替换该事件。但只是第一次出现。我需要这个全球工作(因此&#39; / g&#39;修饰符。任何线索?

输入文件看起来大致如下:

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"}}

感谢。

1 个答案:

答案 0 :(得分:2)

我的正则表达式过于贪婪,我通过用/css:"styles\/?[A-Za-z]*\/+([A-Za-z0-9]+\.css)"}/g替换我的模式来解决这个问题,现在我又回来了。