grunt-usemin с шаблоном заменяет только первое совпадение

#javascript #regex #grunt-usemin

#javascript #регулярное выражение #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']
            ]
        }
    }
}
  

Который делает то, что я хочу, учитывая файл javascript со ссылкой на обновленный файл css, он заменяет вхождение. Но это только первое явление. Мне нужно, чтобы это работало глобально (отсюда и модификатор ‘/ 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"}}
  

Спасибо.

Ответ №1:

Мое регулярное выражение было слишком жадным, я исправил это, заменив свой шаблон на /css:"styles/?[A-Za-z]*/ ([A-Za-z0-9] .css)"}/g , и теперь я снова в деле.

Комментарии:

1. Спасибо за это вдохновение, я забыл /g модификатор для моего regExpr m(