如何使用rev-replace替换manifest.json文件中的文件名

时间:2017-08-25 08:03:20

标签: gulp gulp-rev

我卡住了一点 - 我想用清单文件中的哈希版本替换图像文件名。

Manifest看起来像这样:

findElements(By.xpath("//button[@class='btn btn-md bgm-blue m-r-10 waves-effect'][contains(text(),'Save')]"));

我希望这些图标src被替换为散列文件名,如下所示:" android-chrome-192x192-b03df0131.png"

我应该这样做的gulp文件看起来像这样:

{
"icons": [
    {
        "src": "android-chrome-192x192.png",
        "sizes": "192x192",
        "type": "image/png"
    },
    {
        "src": "android-chrome-512x512.png",
        "sizes": "512x512",
        "type": "image/png"
    }
]
}

1 个答案:

答案 0 :(得分:0)

经过大量的谷歌搜索和文档阅读后,我得到了它的工作:D

因此,如果有人搜索此内容:

const gutil = require('gulp-util');

module.exports = function (gulp, plugins) {
    return function () {
        const manifest = gulp.src('public/dist/rev-manifest.json');

        function replaceIconPath(filename) {
            if(filename.includes('android-chrome-')) {
                return filename.replace('img/icon/', '');
            }

            return filename;
        }

        return gulp.src('public/dist/@(css|js|img)/**')
            .pipe(plugins.revReplace({
                replaceInExtensions: ['.json', '.css', '.js', '.html', '.hbs'],
                manifest: manifest,
                modifyUnreved: replaceIconPath,
                modifyReved: replaceIconPath
            }))
            .pipe(gulp.dest('public/dist'));
    };
};

所以让我稍后解释一下 - 重要的部分是在plugins.revReplace。

您需要选项replaceInExtension并添加' .json'但您还需要指定默认选项,否则它们将丢失。

' modifiyUnreved'和' modifyReved'如果您必须进一步修改文件名,则只需要选项。在我的情况下,它无法找到该文件,因为我的rev-manifest与我的清单文件相比处于另一个级别。所以我需要切断它找到src并替换它的路径。