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 相关文章推荐
jQuery 表单验证扩展(三)
Oct 20 Javascript
js实现翻页后保持checkbox选中状态的实现方法
Nov 03 Javascript
JS获取各种浏览器窗口大小的方法
Jan 14 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
Aug 25 Javascript
详解JavaScript中基于原型prototype的继承特性
May 05 Javascript
JavaScript实战(原生range和自定义特效)简单实例
Aug 21 Javascript
JS ES6多行字符串与连接字符串的表示方法
Apr 26 Javascript
AugularJS从入门到实践(必看篇)
Jul 10 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
Feb 17 Javascript
jquery css实现流程进度条
Mar 26 jQuery
精读《Vue3.0 Function API》
May 20 Javascript
原生JS实现音乐播放器的示例代码
Feb 25 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
mysql建立外键
2006/11/25 PHP
PHP实现用户认证及管理完全源码
2007/03/11 PHP
PHPMailer 中文使用说明小结
2010/01/22 PHP
php实现过滤表单提交中html标签的方法
2014/10/17 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
javascript document.compatMode兼容性
2010/02/23 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
2015/02/03 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
简单实现JavaScript图片切换效果
2016/11/28 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
python中文编码问题小结
2014/09/28 Python
python中Matplotlib实现绘制3D图的示例代码
2017/09/04 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
django用户登录验证的完整示例代码
2019/07/21 Python
关于tensorflow的几种参数初始化方法小结
2020/01/04 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
Python tkinter制作单机五子棋游戏
2020/09/14 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
韩国江南富人区高端时尚百货商场:Galleria(格乐丽雅)
2018/03/27 全球购物
项目资料员岗位职责
2013/12/10 职场文书
通用员工手册范本
2015/05/14 职场文书
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis