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 相关文章推荐
javascript dom代码应用 简单的相册[firefox only]
Jun 12 Javascript
图片轮换效果实现代码(点击按钮停止执行)
Apr 12 Javascript
js 加密压缩出现bug解决方案
Nov 25 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
Mar 05 Javascript
javascript结合Canvas 实现简易的圆形时钟
Mar 11 Javascript
JS实现自动定时切换的简洁网页选项卡效果
Oct 13 Javascript
JS中对象与字符串的互相转换详解
May 20 Javascript
Sequelize中用group by进行分组聚合查询
Dec 12 Javascript
关于Node.js的events.EventEmitter用法介绍
Apr 01 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
Jul 13 Javascript
Angular实现下载安装包的功能代码分享
Sep 05 Javascript
el-table-column 内容不自动换行的解决方法
Aug 14 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
如何设置mysql允许外网访问
2013/06/04 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
js遍历td tr等html元素
2012/12/13 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
2016/01/08 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
jQuery下拉菜单的实现代码
2016/11/03 Javascript
详谈Angular路由与Nodejs路由的区别
2017/03/05 NodeJs
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
2017/07/30 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
更改Ubuntu默认python版本的两种方法python-> Anaconda
2016/12/18 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
Python正则表达式和re库知识点总结
2019/02/11 Python
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
Jdbc数据访问技术面试题
2012/03/30 面试题
一道Delphi上机题
2012/06/04 面试题
大专学生推荐信范文
2013/11/19 职场文书
如何写一份好的英文求职信
2014/03/19 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
优秀教师推荐材料
2014/12/16 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
html5表单的required属性使用
2021/07/07 HTML / CSS