Gulp / Wiredep 构建时在 css 中嵌入了 base64 图像的完整路径

Gulp / Wiredep builds with full path prepended to base64 images embedded in css

使用 wiredep + ng-poly,我有一个来自 angular toasty 的主文件。

"main": [
    "dist/angular-toasty.js",
    "dist/angular-toasty.css"
],

在angular-toasty.css中,有Base64 PNG:

url("data:font/ttf;base64,AAEAAAASAQAABAAgR0RF....")

如何告诉 wiredep 忽略这些 url,以便它在我部署时不生成本地路径?

file:///C:/.../bower_components/angular-toasty/dis…AAAAEACAABACwAAQAIAAEABACg

问题的根源在于ng-poly构建资源的方式。我有点过时了,所以我要 post 在这里为那些以后可能会偶然发现的人修复。

在 build.js 文件中,在 'bowerCopy' 下,有一种规范化技术无法正确处理 data: url。这是我用来解决这个问题的代码。

      .pipe($.if(isProd, $.modifyCssUrls({
    modify: function (url, filePath) {
      if (url.indexOf('http') !== 0 && url.indexOf('data:') !== 0) {
        filePath = path.dirname(filePath) + path.sep;
        filePath = filePath.substring(filePath.indexOf(bowerDir) + bowerDir.length,
          filePath.length);
      } else if (url.indexOf('data:') === 0) {
        // If it's 0, just return it....
        return url;
      }
      url = path.normalize(filePath + url);
      url = url.replace(/[/\]/g, '/');
      return url;
    }
  })))

我添加了 "else if" 语句。