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客户端快捷键管理类的较完整实现和应用
Jun 08 Javascript
date.parse在IE和FF中的区别
Jul 29 Javascript
jquery如何扑捉回车键触发的事件
Apr 24 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
Feb 28 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
Jan 18 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
May 03 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
Aug 03 jQuery
vue.js 添加 fastclick的支持方法
Aug 28 Javascript
一步步教你利用Docker设置Node.js
Nov 20 Javascript
手把手15分钟搭一个企业级脚手架
Sep 16 Javascript
基于JavaScript获取base64图片大小
Oct 18 Javascript
vue 自定义组件的写法与用法详解
Mar 04 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中去除所有js,html,css代码
2010/10/12 PHP
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
纯js和css完成贪吃蛇小游戏demo
2016/09/01 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
js实现上传图片预览方法
2016/10/25 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
2018/02/05 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
2019/08/02 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
讲解Python中的递归函数
2015/04/27 Python
Python脚本实现Web漏洞扫描工具
2016/10/25 Python
Python断言assert的用法代码解析
2018/02/03 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
2019/07/19 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
接口可以包含哪些成员
2012/09/30 面试题
建筑自我鉴定
2013/10/19 职场文书
老同学聚会感言
2014/02/23 职场文书
2014全国两会学习心得体会1000字
2014/03/10 职场文书
企业年度评优方案
2014/06/02 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
平安家庭事迹材料
2014/12/20 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
使用Cargo工具高效创建Rust项目
2022/08/14 Javascript