Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了gruntjs – 在Yeoman的Angular项目中使用Font Awesome SCSS的正确方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用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,但有些东西(Grunt?)将我的文件编辑回原始文件. 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吗?通过覆盖其认的“主要”属性

解决方法

根据您的问题判断,我认为您可能不熟悉Web前端构建过程.不幸的是,它有时会让人头疼.

首先,请注意SCSS!= CSS和浏览器不知道如何使用SCSs.包括< link rel =“stylesheet”href =“main.scss”>在HTML< head>中标签不起作用.我们可以在开发过程中享受SCSS的各种特权(例如变量,导入等),但是要在浏览器中使用这些样式,我们必须将SCSS转换为CSS(浏览器可以识别).

为了使开发人员的工作更轻松,种子项目(例如您正在使用的项目)通常包含某种自动构建过程,其中包括将SCSS转换为CSs.构建过程通常通过任务运行程序执行,例如Grunt或Gulp.这些种子项目/模板通常还包括一个任务,用于将项目的依赖项(在bower.json文件中声明)自动注入index.html.一个名为wiredep的工具用于读取您的bower.json文件以确定这些依赖关系,特别是,它将查找“main”属性以确定特定包所需的文件.然后它将注入适当的< script />和< link>标签.

为了进一步解释这一点,当你执行bower -install font-awe@L_718_36@me时 – 发生了一些事情:

>包下载并添加到您的项目中(通常是bower_components /).
>将一个条目添加到您的bower.json文件中,将该软件包添加到项目的依赖项中.

每个包都包含自己的bower.json文件,该文件描述了它的各种属性,其中最重要的(名称后)是main.你可以看到font-awesome bower.json文件here.正如你所看到的,它的主要属性引用了几个文件.这些是wiredep用于确定哪个< script />的文件.和< link>要注入index.html的标签.

通过在项目的bower.json中指定覆盖,如下所示:

"overrides": {
  "fontawesome": {
    "main": [
      "./scss/font-awesome.scss",// Now it's SCSS
      "./fonts/*"
    ]
  }
}

您指定了wiredep,即./scss/font-awesome.scss和./fonts/*是项目所需的文件,并忽略font-awesome bower.json文件中列出的文件.

关于SCSS:看看Sass guide,特别是关于进口的部分. Sass @import允许您将样式分割为几个较小的SCSS文件(部分),这些文件在转换后被组合并包含在单个(可选缩小的)CSS文件中.这包括您导入main.scss的任何第三方SCSS文件.例如,如果您将font-awesome.scss导入main.scss文件,然后将其转换为CSS,则生成的CSS文件将包含font-awesome.scss中包含的所有样式.

要包含和自定义第三方SCSS文件,我所做的是:

>在我自己的@L_52_65@main.scss文件中指定导入.>对我想要的变量进行任何自定义.>将main.scss透明化为CSs.>包括< link>标记到index.html文件中已转换的CSS文件.

大佬总结

以上是大佬教程为你收集整理的gruntjs – 在Yeoman的Angular项目中使用Font Awesome SCSS的正确方法全部内容,希望文章能够帮你解决gruntjs – 在Yeoman的Angular项目中使用Font Awesome SCSS的正确方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。