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优化效率 提升性能解决方案
Sep 06 Javascript
javascript数组去重3种方法的性能测试与比较
Mar 26 Javascript
JavaScript中使用Substring删除字符串最后一个字符
Nov 03 Javascript
js中for in的用法示例解析
Dec 25 Javascript
动态加载jquery库的方法
Feb 12 Javascript
js实现跨域的多种方法
Dec 25 Javascript
微信小程序 数据封装,参数传值等经验分享
Jan 09 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
Feb 22 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
Apr 10 Javascript
zepto.js 实时监听输入框的方法
Dec 04 Javascript
javascript遍历对象的五种方式实例代码
Oct 24 Javascript
vue ant design 封装弹窗表单的使用
Jun 01 Vue.js
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-FPM之Chroot执行环境详解
2015/08/03 PHP
php设计模式之单例模式代码
2016/06/11 PHP
php mysqli查询语句返回值类型实例分析
2016/06/29 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
关闭浏览器时提示onbeforeunload事件
2013/12/25 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
js实现数组转换成json
2015/06/26 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
Vue的路由及路由钩子函数的实现
2019/07/02 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
JS JQuery获取data-*属性值方法解析
2020/09/01 jQuery
[01:10]DOTA2 Supermajor:英雄,由我们见证
2018/05/14 DOTA
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
Python实现二分法算法实例
2015/02/02 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
韩语专业本科生求职信
2013/10/01 职场文书
酒店办公室文员岗位职责
2013/12/18 职场文书
公积金转移接收函
2014/01/11 职场文书
农民致富事迹材料
2014/01/23 职场文书
英语专业自荐书
2014/06/13 职场文书
药剂专业求职信
2014/06/20 职场文书
领导班子自我剖析材料
2014/08/16 职场文书
2016年推广普通话宣传周活动总结
2016/04/06 职场文书
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
2021/12/06 HTML / CSS