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 相关文章推荐
ie 调试javascript的工具
Apr 29 Javascript
Js 冒泡事件阻止实现代码
Jan 27 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
Jul 09 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
Jul 29 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
May 15 Javascript
js将json格式的对象拼接成复杂的url参数方法
May 25 Javascript
关于Javascript中defer和async的区别总结
Sep 20 Javascript
jQuery+pjax简单示例汇总
Apr 21 jQuery
Bootstrap Table中的多选框删除功能
Jul 15 Javascript
element-ui循环显示radio控件信息的方法
Aug 24 Javascript
vue增加强缓存和版本号的实现方法
May 01 Javascript
element-ui如何防止重复提交的方法步骤
Dec 09 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
用Simple Excel导出xls实现方法
2012/12/06 PHP
探讨捕获php错误信息方法的详解
2013/06/09 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
Jquery Change与bind事件代码
2011/09/29 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
js 自带的sort() 方法全面了解
2016/08/16 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
vue使用showdown并实现代码区域高亮的示例代码
2019/10/17 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
[59:35]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第一场 1月8日
2021/03/11 DOTA
一篇文章入门Python生态系统(Python新手入门指导)
2015/12/11 Python
Python随机读取文件实现实例
2017/05/25 Python
解决pandas .to_excel不覆盖已有sheet的问题
2018/12/10 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
总经理助理岗位职责
2013/11/08 职场文书
仓库规划计划书
2014/04/28 职场文书
淘宝活动总结范文
2014/06/26 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
2014年教研员工作总结
2014/12/23 职场文书
2015年教师节感言
2015/08/03 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书
调解协议书范本
2016/03/21 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
mysql的单列多值存储实例详解
2022/04/05 MySQL