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 与 php 通过json数据进行通讯示例
Mar 26 Javascript
Node.js实现的简易网页抓取功能示例
Dec 05 Javascript
jquery带下拉菜单和焦点图代码分享
Aug 24 Javascript
layer弹出层中H5播放器全屏出错的解决方法
Feb 21 Javascript
详解node中创建服务进程
May 09 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
Jul 05 Javascript
webpack引入eslint配置详解
Jan 22 Javascript
vue+iview/elementUi实现城市多选
Mar 28 Javascript
微信小程序人脸识别功能代码实例
May 07 Javascript
vue v-for 使用问题整理小结
Aug 04 Javascript
LayUI数据接口返回实体封装的例子
Sep 12 Javascript
使用webpack搭建vue环境的教程详解
Dec 31 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
Php+SqlServer实现分页显示
2006/10/09 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
PHP扩展CURL的用法详解
2014/06/20 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
Yii2 GridView实现列表页直接修改数据的方法
2016/05/16 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
2019/05/09 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
用jquery写的一个万年历(自写)
2014/01/20 Javascript
JavaScript访问字符串中单个字符的两种方法
2015/07/03 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
nodejs中art-template模板语法的引入及冲突解决方案
2017/11/07 NodeJs
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
[42:24]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第三场 11.27
2020/12/01 DOTA
pyqt和pyside开发图形化界面
2014/01/22 Python
python数据类型_字符串常用操作(详解)
2017/05/30 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
Python中的Django基本命令实例详解
2018/07/15 Python
python 根据时间来生成唯一的字符串方法
2019/01/14 Python
python游戏地图最短路径求解
2019/01/16 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
怎样在程序里获得一个空指针
2015/01/24 面试题
数学系毕业生求职信
2014/05/29 职场文书
门面房租房协议书
2014/08/20 职场文书
企业趣味活动方案
2014/08/21 职场文书
被告代理词范文
2015/05/25 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书