0

我想知道如何让 gulp-rev-replace 用子文件夹中的 HTML 文件中的相同哈希替换文件引用。考虑以下文件结构

  • 索引.html
  • 子文件夹
    • 索引.html
  • 脚本
    • main.js
  • 风格
    • 主文件

以及以下 html 语句:

索引.html:

<!-- build:css styles/main.css -->
<link rel="stylesheet" href="/bower_components/normalize-css/normalize.css">
<link rel="stylesheet" href="styles/main.css">
<!-- endbuild -->

子文件夹/index.html:

<!-- build:css ../styles/main.css -->
<link rel="stylesheet" href="/bower_components/normalize-css/normalize.css">
<link rel="stylesheet" href="../styles/main.css">
<!-- endbuild -->

以及我的 Gulpfile 中的以下内容

gulp.task('html', ['styles'], () => {
  const assets = $.useref.assets({searchPath: ['.tmp', 'app', '.']});

  return gulp.src('app/**/*.html')
    .pipe(assets)
    .pipe($.if('*.js', $.uglify()))
    .pipe($.if('*.css', $.minifyCss({compatibility: '*'})))
    .pipe($.rev())
    .pipe(assets.restore())
    .pipe($.useref())
    .pipe($.revReplace())
    .pipe($.if('*.html', $.minifyHtml({conditionals: true, loose: true})))
    .pipe(gulp.dest('dist'));
});

样式链接块index.html将被正确的缩小和散列样式表引用替换。相反,相同的块subfolder/index.html将获得完全不同的散列样式表引用。但是,它确实使样式表的路径正确。

我是否错误地设置了我的 Gulpfile?

4

1 回答 1

0

在这个单独的答案的帮助下弄清楚了。我最终将每个 HTML 文件中的样式引用设置为 app 目录的根目录,并提供 3 个目录进行搜索:

<!-- build:css({.tmp,app,.}) /styles/main.css -->
<link rel="stylesheet" href="/bower_components/normalize-css/normalize.css">
<link rel="stylesheet" href="/styles/main.css">
<!-- endbuild -->

匹配提供给 gulp-useref 的三个目录

const assets = $.useref.assets({searchPath: ['.tmp', 'app', '.']});
于 2015-10-14T01:24:51.520 回答