Gulp Rev 不包含我的清单文件中的路径

avi*_*met 5 javascript node.js gulp gulp-rev

我将 Gulp 任务设置为同时连接、缩小和指纹资产,将它们直接写入我的资产文件夹:

(CSS部分)

gulp.task('styles:cssmin', function(){
    return gulp.src('src/css/*.css')
        .pipe(concat('main.css')) // combine them
        .pipe(cssmin()) // minify them
        .pipe(rev()) // Pipe through gulp-rev to fingerprint generated file
        .pipe(gulp.dest('assets/css'))  // write rev'd assets 
        .pipe(rev.manifest({
            merge: true // Merge because this happens for .js and images too
        }))
        .pipe(gulp.dest('./')); // write manifest
});
Run Code Online (Sandbox Code Playgroud)

这会对文件进行指纹识别并生成清单,但我无法将任何路径保存到清单文件中。这是它生成的清单:

{
  "bg.jpg": "bg-447ac2238b.jpg",
  "logo.png": "logo-e31e139d4d.png",
  "main-min.js": "main-min-cc3a682299.js",
  "main.css": "main-ea0d06582f.css",
  "main.js": "main-35ec0bb3c8.js"
}
Run Code Online (Sandbox Code Playgroud)

我希望将其设置为:

{
  "assets/img/bg.jpg": "assets/img/bg-447ac2238b.jpg",
  "assets/img/logo.png": "assets/img/logo-e31e139d4d.png",
  "assets/js/main-min.js": "assets/js/main-min-cc3a682299.js",
  "assets/css/main.css": "assets/css/main-ea0d06582f.css",
  "assets/jsg/main.js": "assets/js/main-35ec0bb3c8.js"
}
Run Code Online (Sandbox Code Playgroud)

特别是考虑到文档给出了一个包含相对路径的示例

小智 6

我遇到了同样的问题,最终将流中的资产目录重命名为我想要的并指定了 rev-manifest 的路径。

var rename = require("gulp-rename");

gulp.task('styles:cssmin', function(){

    return gulp.src('src/css/*.css')
        .pipe(concat('main.css')) // combine them
        .pipe(cssmin()) // minify them
        .pipe(rename({
            dirname: "assets/css" //manually fixing path for rev-manifest
        }))
        .pipe(rev('path/to/your/rev/rev-manifest.json')) // Specify manifest location
        .pipe(gulp.dest('assets/css'))  // write rev'd assets 
        .pipe(rev.manifest({
            merge: true // Merge because this happens for .js and images too
        }))
        .pipe(gulp.dest('./')); // write manifest
});
Run Code Online (Sandbox Code Playgroud)