gulp / minify:index.html在文件名中得到神秘的扩展,如何利用?

时间:2016-06-10 23:17:47

标签: javascript node.js build gulp gulp-rev

我正在使用gulp缩小index.html文件(注意:接管此项目,构建系统已由前dev开始)。

一切正常,但gulp任务会生成一个HTML文件,其中包含一个神秘的扩展名,如:

  

索引bd2c7f58f0.html

我明白这必须有它的优点,但我无法掌握... :)因为现在的缺点是:

  • 节点服务器需要存在index.html文件才能使'/'路由正常工作。
  • 因此到目前为止,我要么必须在每个构建上复制文件,要么创建一个需要在每次构建时更新的链接

我错过了什么?我应该指示gulp创建一个简单的index.html文件,或者这里的最佳做法是什么?

此外,各种插件调用中的哪一个实际上负责将该扩展名附加到文件名?

编辑:似乎是gulp-rev和revReplace调用

以下是我正在使用的gulp任务:

gulp.task('html', ['styles', 'scripts'], function () {
    var client = buildHTML('./client/index.html', './dist/public');        
    return merge(client);
});

function buildHTML(index, distFolder) {
    var lazypipe = require('lazypipe');
    var saveHTML = lazypipe()
        .pipe($.htmlmin, {
            removeComments: true,
            removeOptionalTags: true
        })
        .pipe(gulp.dest, distFolder);


    return gulp.src(index)
        .pipe($.useref())
        .pipe($.rev())
        .pipe($.revReplace({replaceInExtensions: ['.js', '.css', '.html', '.ejs']}))
        .pipe($.if('*.html', saveHTML()));
}

1 个答案:

答案 0 :(得分:0)

我熟悉的一个优点是,当它与资产一起使用时,当您重新编译资产并为该文件创建新指纹时,请求将无法返回缓存的响应,因为它是一个不同的文件。至于你的问题,你可能不应该添加你的索引,我认为它非常不正统