How do I replace the filenames listed in index.html with the output of gulp-rev?

后端 未结 5 1581
一生所求
一生所求 2021-02-04 03:13

I\'m using gulp-rev to build static files that I can set to never expire. I\'d like to replace all references to the generated files in index.html to these renamed files, but I

5条回答
  •  無奈伤痛
    2021-02-04 03:22

    You could do it with gulp-useref like this.

    var gulp = require('gulp'),
        useref = require('gulp-useref'),
        filter = require('gulp-filter'),
        uglify = require('gulp-uglify'),
        minifyCss = require('gulp-minify-css'),
        rev = require('gulp-rev');
    
    gulp.task('html', function () {
        var jsFilter = filter('**/*.js');
        var cssFilter = filter('**/*.css');
    
        return gulp.src('app/*.html')
            .pipe(useref.assets())
            .pipe(jsFilter)
            .pipe(uglify())
            .pipe(rev())
            .pipe(jsFilter.restore())
            .pipe(cssFilter)
            .pipe(minifyCss())
            .pipe(rev())
            .pipe(cssFilter.restore())
            .pipe(useref.restore())
            .pipe(useref())
            .pipe(gulp.dest('dist'));
    });
    

    or you could even do it this way:

    gulp.task('html', function () {
        var jsFilter = filter('**/*.js');
        var cssFilter = filter('**/*.css');
    
        return gulp.src('app/*.html')
            .pipe(useref.assets())
            .pipe(rev())
            .pipe(jsFilter)
            .pipe(uglify())
            .pipe(jsFilter.restore())
            .pipe(cssFilter)
            .pipe(minifyCss())
            .pipe(cssFilter.restore())
            .pipe(useref.restore())
            .pipe(useref())
            .pipe(gulp.dest('dist'));
    });
    

    The problem is updating the asset paths in the html with the new rev file paths. gulp-useref doesn't do that.

提交回复
热议问题