2013-04-24 36 views
7

我正在与Yeoman一起开发AngularJS应用程序。Yeoman供应商图片路径在构建应用程序时不正确

该应用程序依赖于与Bower一起安装的jQuery UI。这是我如何包括jQuery UI主题:

<!-- build:css styles/plugins.css --> 
<link rel="stylesheet" href="components/jquery.ui/themes/base/jquery.ui.core.css" /> 
<link rel="stylesheet" href="components/jquery.ui/themes/base/jquery.ui.accordion.css" /> 
<link rel="stylesheet" href="components/jquery.ui/themes/base/jquery.ui.autocomplete.css" /> 
<link rel="stylesheet" href="components/jquery.ui/themes/base/jquery.ui.button.css" /> 
<link rel="stylesheet" href="components/jquery.ui/themes/base/jquery.ui.datepicker.css" /> 
<link rel="stylesheet" href="components/jquery.ui/themes/base/jquery.ui.dialog.css" /> 
<link rel="stylesheet" href="components/jquery.ui/themes/base/jquery.ui.menu.css" /> 
<link rel="stylesheet" href="components/jquery.ui/themes/base/jquery.ui.progressbar.css" /> 
<link rel="stylesheet" href="components/jquery.ui/themes/base/jquery.ui.resizable.css" /> 
<link rel="stylesheet" href="components/jquery.ui/themes/base/jquery.ui.selectable.css" /> 
<link rel="stylesheet" href="components/jquery.ui/themes/base/jquery.ui.slider.css" /> 
<link rel="stylesheet" href="components/jquery.ui/themes/base/jquery.ui.spinner.css" /> 
<link rel="stylesheet" href="components/jquery.ui/themes/base/jquery.ui.tabs.css" /> 
<link rel="stylesheet" href="components/jquery.ui/themes/base/jquery.ui.tooltip.css" /> 
<link rel="stylesheet" href="components/jquery.ui/themes/base/jquery.ui.theme.css" /> 
<!-- endbuild --> 

当构建应用程序,一切顺利,没有错误。

但是,在浏览器控制台(使用Chrome)中,我可以看到无法找到jQuery UI Datepicker所需的图像,因为它看起来在styles/images/之内,而且它们实际上在components/...之内。

截图

source image url

我的第一个想法是覆盖CSS的jQuery UI的图像路径,但是这似乎并不像最好的解决方案。例如:

原始造型

.ui-state-error .ui-icon, 
.ui-state-error-text .ui-icon { 
    background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; 
} 

我重写

.ui-widget-header .ui-state-error { 
    background-image: url(../components/jquery.ui/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png); 
} 

任何推荐的解决方案?

回答

7

我有同样的问题。但是,我并没有改变jQuery CSS(这可能对未来的更新有害......),而是在grunt脚本(Gruntfile.js)中调整了“imagemin”任务,以便将图像复制到预期的位置。对于任何第三方库来说都是如此,只要grunt负责在缩小的CSS中修改图像路径。

这里是我所做的更改(请注意,我的jQuery UI的主题文件夹位于app\styles文件夹下)

前:

imagemin : { 
    dist : { 
     files : [{ 
       expand : true, 
       cwd : '<%= yeoman.app %>/images', 
       src : '{,*/}*.{png,jpg,jpeg}', 
       dest : '<%= yeoman.dist %>/images' 
      } 
     ] 
    } 
} 

后:

imagemin : { 
    dist : { 
     files : [{ 
       expand : true, 
       cwd : '<%= yeoman.app %>/images', 
       src : '{,*/}*.{png,jpg,jpeg}', 
       dest : '<%= yeoman.dist %>/images' 
      }, { 
       expand : true, 
       flatten : true, 
       cwd : '<%= yeoman.app %>/styles', 
       src : '**/*.{png,jpg,jpeg,gif}', 
       dest : '<%= yeoman.dist %>/styles/images' 
      } 
     ] 
    } 
} 

希望这可以帮助 !

+0

它对我很好,修改了在'bower_components'下分发图像的路径。 – 2013-12-10 21:31:58

+0

@Fernando你只是将样式目录更改为bower_components? – grant 2014-04-18 17:19:06

+1

@grant,就我而言,我将'app/bower_components'下的所有图像复制到'dist/styles/images'中。由于整合的CSS位于'dist/styles'中,这意味着在CSS中对'images/someimage'的引用将在分发包中起作用。看[这个要点](https://gist.github.com/fernandoacorreia/11062046)。 – 2014-04-18 20:06:11

相关问题