Мод Gulp revRewrite не работает для перезаписи css и js в проекте - PullRequest
0 голосов
/ 09 июня 2019

Я использую Gulp v.4 из npm с модами gulp-rev и gulp-rev-rewrite для предотвращения Cash Busting CSS и JS. Но даже если я уже прочитал много руководств и заметок, это все равно не сработает. На самом деле мод gulp-rev работает хорошо, но когда я хочу переписать ссылки внутри html (для моего, например, файла latte), он не переписывает эти имена.

gulp.task('rev', () =>
    gulp.src('web/dist/**/*.{css,js}')
        .pipe(rev())
        .pipe(gulp.dest('web/dist/build'))
        .pipe(rev.manifest())
        .pipe(gulp.dest('web/dist'))
);


function rew() {
    const manifest = gulp.src('web/dist/rev-manifest.json');

    return gulp.src('app/FrontModule/templates/_styles.latte')
        .pipe(revRewrite({ manifest: manifest }))
        .pipe(gulp.dest('test'));
}

В rev-manifest.json у меня есть что-то вроде этого:

{
  "bootstrap-t4s.min.css": "bootstrap-t4s-85b8c0fa84.min.css",
}

и в html (латте) _styles.latte у меня есть это:

<link rel="stylesheet" href="css/bootstrap-t4s.min.css" media="all">

когда я запускаю функцию gulp для перезаписи этого файла с помощью json, я получаю _styles.latte, который выглядит так же, как и раньше:

<link rel="stylesheet" href="css/bootstrap-t4s.min.css" media="all">

Так что я делаю не так?

1 Ответ

1 голос
/ 10 июня 2019

По умолчанию gulp-rev-rewrite заменяет только вхождения файлов в файлах js, css, html и handlebars. Вы можете использовать replaceInExtensions, чтобы переопределить это значение по умолчанию. В этом случае:

function rew() {
  const manifest = gulp.src("web/dist/rev-manifest.json");

  return gulp
    .src("app/FrontModule/templates/_styles.latte")
    .pipe(revRewrite({ manifest: manifest, replaceInExtensions: [".latte"] }))
    .pipe(gulp.dest("test"));
}
...