【发布时间】:2023-03-11 22:35:02
【问题描述】:
我使用 Yeoman 的生成器创建了一个 Angular 项目,现在我正在尝试将 Font Awesome 添加到项目中。我使用 Bower 安装它使用
bower install fontawesome --save
然后它自动将以下代码添加到我的app/index.html:
<!-- build:css(.) styles/vendor.css -->
<!-- bower:css -->
<link rel="stylesheet" href="bower_components/fontawesome/css/font-awesome.css" />
<!-- endbower -->
<!-- endbuild -->
但我不想将它用作 CSS,而是用作 SCSS 导入(以便能够更改字体文件的 URL)。所以我从HTML页面中删除了上面的代码,并将正确的代码添加到app/styles/main.scss:
$icon-font-path: "../bower_components/bootstrap-sass-official/assets/fonts/bootstrap/";
$fa-font-path: "../bower_components/fontawesome/fonts/"; // <==== here
// bower:scss
@import "bootstrap-sass-official/assets/stylesheets/_bootstrap.scss";
@import "fontawesome/scss/font-awesome.scss"; // <==== and here
// endbower
然后我运行grunt build,但有些东西(咕噜声?)将我的文件编辑回原始文件。 index.html 再次获得了 <link>,而我的 main.scss 仅通过 Bootstrap 导入保留。
好的,我们快到了。
所以我查看了 Bootstrap 的 bower.json 并与 Font Awesome 的 bower.json 进行比较,我发现了以下差异:
// Bootstrap
"main": [
"assets/stylesheets/_bootstrap.scss", // it's SCSS
...
],
// Font Awesome
"main": [
"./css/font-awesome.css", // it's CSS
...
],
然后我找到了一种方法来正确(不确定)使用我的应用程序的 bower.json 覆盖 Font Awesome 的凉亭配置,并将以下代码添加到其中
"overrides": {
"fontawesome": {
"main": [
"./scss/font-awesome.scss", // now it's SCSS
"./fonts/*"
]
}
}
问题:这是使用 Font Awesome 作为 SCSS 导入并避免 Grunt 在构建项目时更改我的文件的正确方法吗?通过覆盖其默认的"main" 属性?
【问题讨论】:
标签: gruntjs bower font-awesome