13

我正在尝试将 font awesome 5 包含到运行 Angular > 5.0.0 的 angular-cli 项目(1.6.0)中。

我使用(如所述):

yarn config set @fortawesome:registry https://npm.fontawesome.com/xxxxx-xxxx-xxx-xxx-xxxxxxx
yarn add @fortawesome/fontawesome
yarn add @fortawesome/fontawesome-pro-light

它成功获取包。现在我想将包包含到我的 angular-cli 中。在我的app.component.ts尝试中(如:https ://www.npmjs.com/package/@fortawesome/fontawesome 所述):

import  fontawesome  from '@fortawesome/fontawesome'
import { faUser } from '@fortawesome/fontawesome-pro-light'

但是打字稿会抛出错误:

ERROR in src/app/app.component.ts(2,9): error TS1192: Module '"xxx/node_modules/@fortawesome/fontawesome/index"' has no default export.

使用 Font Awesome 4,我只是将 .css 文件包含到“样式”数组中。但是 Font Awesome 5 没有包含所有 css 的 css 文件。它只是一堆 .js 文件。

如何在我的 Angular CLI 项目中正确包含 Font Awesome 5?(我希望能够<i class="fal fal-user"></i>在我的标记中使用例如)

4

1 回答 1

28

在 Font Awesome 5 中,您可以像在 FA4 中一样使用基于字体的图标,也可以使用新的基于 SVG 的图标。我仍在考虑使用 angular-cli 配置基于 SVG,但对于基于字体,您可以:

将 FontAwesome 添加到您的 .angular-cli.json:

将 FA 样式包括为 CSS 或 SCSS:

  "styles": [
    "styles.scss"
    "../node_modules/@fortawesome/fontawesome-free-webfonts/css/fontawesome.css",
    "../node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-solid.css",
    "../node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-regular.css",
    "../node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-brands.css",
  ],

或直接将 FontAwesome 添加到您的样式中:

在styles.css 或styles.scss 中包含样式:

$fa-font-path: "../node_modules/@fortawesome/fontawesome-free-webfonts/webfonts";
@import "../node_modules/@fortawesome/fontawesome-free-webfonts/scss/fontawesome.scss";
@import "../node_modules/@fortawesome/fontawesome-free-webfonts/scss/fa-solid.scss";

或直接将 FontAwesome 作为 CSS 添加到您的样式中:

@import "../node_modules/@fortawesome/fontawesome-free-webfonts/css/fontawesome.css";
@import "../node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-solid.css";

如果您不需要修改/增强 FA SCSS,那么使用第一种方法可能最简单。它只是成为您配置的一部分。

关于 SVG

我怀疑这需要包含 FA javascript 文件,但我还没有深入研究。一旦完成,它可能与上述非常相似。


SVG 还原

(编辑添加更多关于 SVG 的细节)

它比我预期的要简单得多。假设您安装了正确的模块:

...您可以将两个必需的脚本添加到您的 .angular-cli.json 中。您需要基本的 fontawesome 脚本,然后是您需要的任何包(或全部三个):

  "scripts": [
    "../node_modules/@fortawesome/fontawesome/index.js",
    "../node_modules/@fortawesome/fontawesome-free-solid/index.js"
  ],

这些脚本将找到您的正常 FA 类,并用 FA 图标的完整 SVG 版本替换元素。

于 2018-01-10T17:00:23.537 回答