Webpack打包字体font-awesome的方法示例


Posted in Javascript onApril 26, 2018

使用webpack构建font-awesome或者bootstrap的时候,最常见的一个问题就是构建字体文件的问题。经常会出现无法找到字体文件的问题。下面就讲一下如何正确构建引入字体文件:

1. 首先安装依赖:

npm install style-loader css-loader file-loader font-awesome-webpack --save-dev
   

2. 在入口文件中引入font-awesome

require('font-awesome-webpack');

3. 设置webpack.config.js处理字体文件

这里有两种方式,如果你不想单独生成字体文件,而是想把字体文件和css文件构建到一个文件中,可以使用url-loader,设置如下:

module: {
      rules: [
        // 省略其他配置...

        // font-awesome
        {
          test: /\.(eot|svg|ttf|woff|woff2)\w*/,
          loader: 'url-loader?limit=1000000'
        },

        // 省略其他配置...
      ]
  }

这里给url-loader传递了一个参数limit,并且设置得比较大,这个数字可以自定义,但是一定要保证大于最大字体文件的大小,因为这个参数是告诉url-loader,如果文件小于这个参数,那么就以Data Url的方式直接构建到文件中。使用这种方式最方便,但是缺点就是构建出来的文件特别大,并且在线上的时候没办法使用cdn缓存文件,不建议部署到线上。

第二种方法就是制定url-loader或者file-loader在构建的时候文件的输出目录,这样在部署的时候font-awesome就会依赖在构建时指定目录下的字体文件,而不会出现找不到字体文件的问题了,此时,webpack的构建配置如下:

module: {
  rules: [
    // 省略其他配置...

    // font-awesome
    {
      test: /\.(eot|svg|ttf|woff|woff2)\w*/,
      loader: 'file-loader?publicPath=/static/res/&outputPath=font/'
    },

    // 省略其他配置...
  ]
}

经过上面的配置构建的工程,font-awesome就会到“/static/res/font/”目录下寻找指定的字体文件,而同时在你构建的工程中也会生成对应的font文件夹,你只需要将这个font文件夹中的字体文件拷贝到“/static/res/font”目录下(如果publicPath为“./”,表示你直接依赖构建目录下的font文件,则不用拷贝),这样当你访问你的页面时就能够正确请求到字体文件了。

参考

https://github.com/webpack-contrib/file-loader

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 中的 && 和 || 使用小结
Apr 25 Javascript
仿百度的关键词匹配搜索示例
Sep 25 Javascript
js获取form的方法
May 06 Javascript
drag-and-drop实现图片浏览器预览
Aug 06 Javascript
Javascript BOM学习小结(六)
Nov 26 Javascript
详细讲解JavaScript中的this绑定
Oct 10 Javascript
JavaScript数据类型的存储方法详解
Aug 25 Javascript
深入浅出webpack之externals的使用
Dec 04 Javascript
vue实现nav导航栏的方法
Dec 13 Javascript
vue-scroller记录滚动位置的示例代码
Jan 17 Javascript
Vue组件开发技巧总结
Mar 04 Javascript
js实现无刷新监听URL的变化示例代码详解
Jun 03 Javascript
webpack配置打包后图片路径出错的解决
Apr 26 #Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
Apr 26 #jQuery
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
Apr 26 #jQuery
Javasript设计模式之链式调用详解
Apr 26 #Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
Apr 26 #Javascript
vue 做移动端微信公众号采坑经验记录
Apr 26 #Javascript
jQuery length 和 size()区别总结
Apr 26 #jQuery
You might like
杏林同学录(六)
2006/10/09 PHP
php adodb分页实现代码
2009/03/19 PHP
php程序的国际化实现方法(利用gettext)
2011/08/14 PHP
ThinkPHP 404页面的设置方法
2015/01/14 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
csdn 博客的css样式 v3
2009/02/24 Javascript
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
nodejs中art-template模板语法的引入及冲突解决方案
2017/11/07 NodeJs
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
jQuery分组选择器简单用法示例
2019/04/04 jQuery
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
详解Python中with语句的用法
2015/04/15 Python
基于Python对数据shape的常见操作详解
2018/12/25 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
特步官方商城:Xtep
2017/03/21 全球购物
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
介绍一下Java的事务处理
2012/12/07 面试题
心理健康教育心得体会
2013/12/29 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
自我推荐信怎么写
2015/03/24 职场文书
班主任班级管理心得体会
2016/01/07 职场文书
《别在吃苦的年纪选择安逸》读后感3篇
2019/11/30 职场文书
人民币符号
2022/02/17 杂记