Как я могу заменить строки междус чем-то еще - PullRequest
0 голосов
/ 22 июня 2019

Я использую gulp для облегчения развертывания веб-интерфейса. Я хотел бы заменить некоторые строки в index.html Например, поворачивая следующий код как

<!-- js starts -->
<script src="xxxxxx/xxxx/xxx1.js"></script>
<script src="xxxxxx/xxxx/xxx2.js"></script>
<script src="xxxxxx/xxxx/xxx3.js"></script>
<script src="xxxxxx/xxxx/xxx4.js"></script>
<!-- js ends -->

в

<!-- js starts -->
<script src="xxxxxx/xxxx/all-one.js"></script>
<!-- js ends -->

Я установил gulp-string-replace, и он отлично работает с некоторым простым регулярным выражением. Но мой случай, кажется, содержит некоторые специальные символы, такие как <! ->

Это мой код ошибки, но я не реализовал то, что хочу. gulp.src ('index.html'). pipe (replaceString ("(? <= '') (. *) (? = '')", "то, что я хочу")) .pipe (gulp.dest (target )); </p>

1 Ответ

0 голосов
/ 22 июня 2019

Предполагая, что вы всегда сохраняете текст в начальных и конечных комментариях одинаковым, это работает:

var gulp = require('gulp');
var replaceString = require('gulp-string-replace');

let replacement = 'Hello world!';
let pattern = /(<!-- js starts -->)[^!]+(<!-- js ends -->)/gim;

gulp.src('index.html')
    .pipe(replaceString(pattern,function(n0,n1,n2){
        return n1 + '\n' + replacement + '\n' + n2;
    }))
    .pipe(gulp.dest('output'));

Результат output/index.html:

<!-- js starts -->
Hello world!
<!-- js ends -->

Кстати,вы сказали, что пытаетесь использовать Regex, но похоже, что вы передаете строковый литерал, а не литерал Regex (то, что я использую выше) или результат вызова конструктора RegExp, например var pattern = new RegExp('hello\s{0,1}World');


Хотя я не буду давать советы о том, что вы должны и не должны использовать, я укажу, что gulp-string-replace некоторое время не обновлялся и имеет открытый выпуск , который на самом делеповлиял на мой ответ;Я попытался использовать встроенные обратные ссылки (например, $1\nHello World\n$2), и это не сработало, заставив меня использовать аргумент функции обратного вызова.gulp-string-replace просто использует replacestream для фактической операции замены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...