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 相关文章推荐
JSQL  一个 web DB 的封装
May 05 Javascript
javascript 防止刷新,后退,关闭
Aug 07 Javascript
javaScript复制功能调用实现方案
Dec 13 Javascript
javascript实现数独解法
Mar 14 Javascript
举例详解JavaScript中Promise的使用
Jun 24 Javascript
详解JavaScript中的Unescape()和String() 函数
Nov 09 Javascript
JS获取子窗口中返回的数据实现方法
May 28 Javascript
JavaScript实战之菜单特效
Aug 16 Javascript
Angular2 (RC4) 路由与导航详解
Sep 21 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
Aug 24 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
Jul 26 Javascript
JavaScript实现简单拖拽效果
Sep 15 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
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
做个自己站内搜索引擎
2006/10/09 PHP
PHP 截取字符串专题集合
2010/08/19 PHP
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
jquery根据锚点offset值实现动画切换
2014/09/11 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
基于jQuery的ajax方法封装
2016/07/14 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
在vue项目中引入highcharts图表的方法
2019/01/21 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
基于python实现KNN分类算法
2020/04/23 Python
python提取log文件内容并画出图表
2019/07/08 Python
基于python实现雪花算法过程详解
2019/11/16 Python
python在不同条件下的输入与输出
2020/02/13 Python
Python用K-means聚类算法进行客户分群的实现
2020/08/23 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
文秘专业应届生求职信范文
2013/11/14 职场文书
领导接待方案
2014/03/13 职场文书
会计员岗位职责
2014/03/15 职场文书
总经理任命书范本
2014/06/05 职场文书
国庆促销活动总结
2014/08/29 职场文书
工作感想范文
2015/08/07 职场文书
创业计划书之干洗店
2019/09/10 职场文书
python小型的音频操作库mp3Play
2022/04/24 Python