2017-08-25 70 views
0

我卡住了一点 - 我想用我们的清单文件中的散列版本替换图像文件名。如何替换我的manifest.json中的文件名使用rev-replace替换文件

清单如下:

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

我希望这些图标SRC与哈希文件名看起来像这样被替换为:“机器人 - 铬 - 192x192-b03df0131.png”

我一饮而尽文件,该文件应该这样做看起来是这样的:

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')); 
    }; 
}; 

回答

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的路径并将其替换。