2016-01-08 2 views
0

Я настраиваю задачу gulp, которая в основном заменит любой оператор import, где он ссылается на файл с расширением разработки.Строка совпадения, но возвращает весь оператор импорта с регулярным выражением

. Пример:

_main.scss: 
    @import '/app/a'; 
    @import '/app/b.development'; 

Так что, если я запустить задачу, я хотел бы иметь регулярное выражение, чтобы вытащить второе утверждение imort в зависимости от режима я запустить его в

Глоток заменить https://www.npmjs.com/package/gulp-replace на сделать это, так что я бы установку задачи следующим образом:

gulp.task('sass:app', function() { 
    return gulp.src(config.src.sass + '**/*.scss') 
    .pipe(
     gulpif(
      config.production, 
      replace(regexheretomatchfile, '') 
     ) 
    ) 
)}; 

так что мой ожидаемый результат будет:

_main.scss: 
    @import '/app/a'; 

Исключая импорт dev.

Мой вопрос: какое регулярное выражение можно использовать для соответствия всему выражению regex? Я безнадежен с регулярным выражением.

ответ

0

Мне нравится использовать сайт, например http://regexr.com/, для проверки моих регулярных выражений с помощью моих «реальных» данных.

следующее регулярное выражение не может быть совершенным, но должна быть хорошей отправной точкой для достижения своей цели:

/@import '.*development';/gi 

В принципе, вы ищете точное соответствие заявление импорта, а затем 0 или более любой символ, затем расширение 'development', за которым следует конечная часть вашей строки.

выше делает много предположений, не ограничиваясь ими: - расстояние от ваших операторов импорта (то есть, как много пустого пространства есть в каждой строке) - ваше постоянное использование апострофы

Как я уже сказал, я использую это как отправную точку, а затем настраиваю вашу конкретную ситуацию. Вам не нужно было целовать свиньи с супер-сложным регулярным выражением прямо в начале.

Смежные вопросы