Jhipster无法加载Font Awesome图标。

5

我在我的jhipster项目中安装了Font Awesome字体库。

但是当我按照以下方式导入Font Awesome时,我的图标没有出现 -

 <link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.css" />

但如果我以这种方式导入字体神器,它们会正常显示

<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">

我已经查看了 Font Awesome 的故障排除指南,但是没有找到任何突出的问题。

如果能提供帮助那就非常感激,因为我想在本地托管这个文件。


首先要仔细检查路径,很可能是路径问题。 - Sarath
它们是的,它们在与 CSS 相同路径的字体目录中,并且 CSS 文件引用 ../fonts。我没有以任何方式篡改 Font Awesome。 - Damien
似乎我的 Font Awesome 安装出了一些问题。删除 Font Awesome 目录并从 Bower 重新安装解决了这个问题。 - Damien
上面的链接是错误的,至少在我尝试的环境中是这样。"font-awesome" 中没有连字符。正确的路径是:<link rel="stylesheet" href="bower_components/fontawesome/css/font-awesome.css">。 - Rori Stumpf
谢谢Rori - 你让我再次检查,但我使用连字符的路径是正确的。 - Damien
显示剩余2条评论
6个回答

6
JHipster 5.0.1 with Angular中,您应该修改vendor.ts文件。例如,如果您想添加faExpandArrowsAlt Fontawesome图标,您应该先导入它,然后使用library.add(faExpandArrowsAlt);添加它。
更改文件后运行yarn run webpack:build' tslint:disable

1
我能够使用 src/main/webapp/app/config/icon-loader.ts 文件在 JHipster v5.1 with React 中获得相同的效果。 - Dan Hardiker

3

问题很可能是由代码压缩引起的,因此我们需要使用font-awesome.min.css,并在gulp“构建”任务中将其过滤掉。

但让我们从最基础的开始。

  1. Install font-awesome with bower saving it in the bower.json:

    bower install --save font-awesome
    
  2. DO NOT add any "overrides" for the font-awesome into bower.json so that gulp-inject does not update content of the <!-- bower:css --> block in the index.html

  3. Add the following code to the index.html:

    <!-- build:css content/css/font-awesome.css -->
    <link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css">
    <!-- endbuild -->
    
  4. Since font-awesome is a font we should include content of its "fonts" folder into the built results. We will just follow what was done for the "bootstrap" fonts and add the following code into the 'copy' task in the gulpfile.js:

    gulp.src(config.bower + 'font-awesome/fonts/*.*')
        .pipe(plumber({errorHandler: handleErrors}))
        .pipe(changed(config.dist + 'content/fonts/'))
        .pipe(rev())
        .pipe(gulp.dest(config.dist + 'content/fonts/'))
        .pipe(rev.manifest(config.revManifest, {
            base: config.dist,
            merge: true
        }))
        .pipe(gulp.dest(config.dist + 'content/fonts/')),
    

    right before the line:

    gulp.src(config.app + 'content/**/*.{woff,woff2,svg,ttf,eot,otf}')
    
  5. And last but not the least is to filter our minified CSS out of the CSS processing. All CSS files are being minified and concatenated in the gulp/build.js. First, we shall install gulp-filter package:

    npm install --save-dev gulp-filter
    

    Now we can include it into gulp/build.js:

    filter = require('gulp-filter')
    

    create custom filter:

    const faFilter = filter(['*','!font-awesome.css'], {restore: true});
    

    and, finally, use this custom filter wrapping existing cssTask():

    .pipe(faFilter)
    .pipe(gulpIf('*.css', cssTask()))
    .pipe(faFilter.restore)
    

1
这是一个很棒的全面回答。完美地运行并且遵循最佳实践。 - anataliocs

1
在使用React的JHipster V5.1中,要添加faUsers图标,只需编辑src/main/webapp/app/config/icon-loader.ts文件,然后就可以在<FontAwesomeIcon icon="users" />中使用该图标。

我们如何在JHipster Angular项目中使用它? - Shoket Mahmood Ahmed

0

看起来我的 Font Awesome 安装出了一些问题。删除 Font Awesome 目录并从 Bower 重新安装解决了这个问题。


0

这是因为cssnano在font-awesome.css文件中犯了一些错误,而没有在.min文件中出现。


0
只需在您的内容目录中创建一个名为“fonts”的文件夹,并将字体文件添加到其中,Jhipster 将通过 gulp 加载所有这些文件。

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