繁体   English   中英

使用 gulp-rev 后如何将修订后的文件包含到 .html 中?

[英]How to include revisioned files into .html after using gulp-rev?

所以我在 gulp 中创建了这个任务:

'use strict';
var gulp = require('gulp');
var gulpGlobals = require('./_gulp-globals.js');
var rev = require('gulp-rev');
var revReplace = require('gulp-rev-replace');


gulp.task('gulp-rev', function () {
    var sources = gulpGlobals.src + '/somefolder/**/*.js';
    var fileToInject = gulpGlobals.destination + '/somefolder/script.js';

    var outputFolderJs = 'webapp/dist/somefolder';

    return gulp.src(fileToInject)
        .pipe(rev())
        .pipe(revReplace())
        .pipe(gulp.dest(outputFolderJs));
});

它创建了这样命名的附加文件,例如: script-7c58e79612.js

但是我如何将它包含在我的 html 文件而不是script.js 因此,例如,而不是我的file.html的这一行:

<script type="text/javascript" src="{{ STATIC_URL}}/somefolder/script.js</script>

我可以有这个:

<script type="text/javascript" src="{{ STATIC_URL}}/somefolder/script-7c58e79612.js</script>

在尝试时,您将需要gulp-rev-replace用于此操作,但您需要在 html 文件而不是脚本文件中使用它。 例如,尝试像这样修改您的任务:

var manifestFolder = 'webapp/dist/manifest';

gulp.task("gulp-rev", function(){
    var sources = gulpGlobals.src + '/somefolder/**/*.js';
    var fileToInject = gulpGlobals.destination + '/somefolder/script.js';
    var outputFolderJs = 'webapp/dist/somefolder';

    return gulp.src(fileToInject)
        .pipe(rev())
        .pipe(gulp.dest(outputFolderJs))
        .pipe(rev.manifest()
        .pipe(gulp.dest(manifestFolder));
})

gulp.task("revreplace", ["gulp-rev"], function() {
    var manifest = gulp.src("./" + manifestFolder + "/rev-manifest.json");
    var source = gulpGlobals.src + '/somefolder/file.html';
    var outputFolderHtml = 'webapp/dist/somefolder';

    return gulp.src(source)
        .pipe(revReplace({manifest: manifest}))
        .pipe(gulp.dest(outputFolderHtml));
});

此代码基于gulp-rev-replace使用文档的第二个示例。 该页面上还有更多文档和示例。

您可以通过交换gulp-rev-all插件来避免中间清单步骤。 它将修订资产和重写参考合并为一个步骤。

// Imports
const gulp =   require('gulp');
const RevAll = require('gulp-rev-all');

// Tasks
const task = {
   resourcify() {
      const srcFiles =    'some/src/folder/**';
      const buildFolder = 'some/build/folder';
      return gulp.src(srcFiles)
         .pipe(RevAll.revision({ dontRenameFile: ['.html'] }))
         .pipe(gulp.dest(buildFolder));
      }
   };

// Gulp
gulp.task('resourcify', task.resourcify);

文档:
https://github.com/smysnk/gulp-rev-all

笔记:
该项目是有争议的,因为它将两个功能合并到一个 Gulp 插件中。 然而,在这种情况下,组合功能是有保证的,因为组合解决了鸡和蛋的问题。

编辑:
更新了示例代码以支持最新版本的插件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM