使用grunt-usemin处理动态生成的图片路径

4
我正在使用Yeoman Webapp生成器构建我的静态网站。
对于我的预加载程序,我有以下代码片段(如果有影响,我正在使用requireJS进行JS)。
for(var i = 1; i <= config.numSlides; i++) {
  images.push(config.imageBase + i + '.jpg');
}

如您所见,我只是生成一个带有数字并在末尾加上 .jpg 的路径。我的图像只是简单地称为 1、2、3、... .jpg。

然而,由于 Yeoman 使用 grunt-usemin.. 它会将我的图像文件重命名为类似于 7f181706.3.jpg 的东西。由于这个原因,我的脚本无法再找到正确的图片了。有没有办法解决这个问题?

我正在查看文档,发现了这样的内容:

assetsDir: 'images',
patterns: {
    js: [[/(image\.png)/, 'Replacing reference to image.jpg']]
}

你可以这样做吗?我尝试了但没有成功。不确定正确的模式是什么。

1个回答

3
您可以在此库的测试文件中找到更好的代码示例,具体来说是:https://github.com/yeoman/grunt-usemin/blob/master/test/test-usemin.js#L233 您可以在其中找到以下代码:
it('should allow for additional replacement patterns', function () {
  grunt.file.mkdir('images');
  grunt.file.write('images/image.2132.png', 'foo');
  grunt.log.muted = true;
  grunt.config.init();
  grunt.config('usemin', {
    js: 'misc.js',
    options: {
      assetsDirs: 'images',
      patterns: {
        js: [
          [/referenceToImage = '([^\']+)'/, 'Replacing image']
        ]
      }
    }
  });
  grunt.file.copy(path.join(__dirname, 'fixtures/misc.js'), 'misc.js');
  grunt.task.run('usemin');
  grunt.task.start();

  var changed = grunt.file.read('misc.js');

  // Check replace has performed its duty
  assert.ok(changed.match(/referenceToImage = 'image\.2132\.png'/));
});

我希望你能从中受益!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接