【问题标题】:How to replace Filenames inside my manifest.json File using rev-replace如何使用 rev-replace 替换 manifest.json 文件中的文件名
【发布时间】:2017-09-04 17:44:46
【问题描述】:

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

清单如下所示:

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

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

我的 gulp 文件应该是这样的:

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

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

        return gulp.src(['public/dist/@(css|js)/**','public/dist/img/icon/**.json'])
            .pipe(plugins.revReplace({replaceInExtentions: ['.json']}))
            .pipe(plugins.revReplace({manifest: manifest}))
            .pipe(gulp.dest('public/dist'));
    };
};

【问题讨论】:

    标签: gulp gulp-rev


    【解决方案1】:

    经过大量的谷歌搜索和文档阅读后,我得到了它的工作: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 并替换它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      相关资源
      最近更新 更多