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 相关文章推荐
js的.innerHTML = ""IE9下显示有错误的解决方法
Sep 16 Javascript
Ajax提交与传统表单提交的区别说明
Feb 07 Javascript
JavaScript获取按钮所在form表单id的方法
Apr 02 Javascript
用javascript实现自动输出网页文本
Jul 30 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
Dec 24 Javascript
每日十条JavaScript经验技巧(二)
Jun 23 Javascript
JavaScript实现三级联动菜单实例代码
Jun 26 Javascript
JS实现页面打印(整体、局部)
Aug 18 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
Mar 01 Javascript
JS实现的简单下拉框联动功能示例
May 11 Javascript
JS实现倒序输出的几种常用方法示例
Apr 13 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
Oct 26 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
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
用PHP生成自己的LOG文件
2006/10/09 PHP
php模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
ThinkPHP中图片按比例切割的代码实例
2019/03/08 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
PHP常用header头定义代码示例汇总
2020/08/29 PHP
学习JavaScript的最佳方法分享
2011/10/21 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
jQuery实现的简单百分比进度条效果示例
2016/08/01 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
利用python计算时间差(返回天数)
2019/09/07 Python
python实现实时视频流播放代码实例
2020/01/11 Python
Python如何输出警告信息
2020/07/30 Python
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
求职信名称怎么写
2014/05/26 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
学子宴致辞大全
2015/07/27 职场文书
2019大学竞选班长发言稿
2019/06/27 职场文书
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
2021/06/05 Python
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python