【问题标题】:Webpack inline font with url-loader带有 url-loader 的 Webpack 内联字体
【发布时间】:2017-01-15 02:04:51
【问题描述】:

我正在尝试将一些字体内联为 base64 编码的数据 URI,但我对 Webpack 的 url-loader 不满意。这很奇怪,因为 url-loader 似乎正在为我的图像和 svg 文件执行此操作。我的设置如下:

目录结构

root/
|-src/
|--assets/
|
|----fonts/
|      icon-fonts/
|        fontawesome.woff2
|
|----styles/
|      fonts.css
|
|--components/
|   main.component.js
|...

webpack.config.js

module: {
  loaders: [
    {
      test: /\.(jpg|png|svg|woff2)$/,
      exclude: /node_modules/,
      loader: 'url?limit=100000&name=[name]-[sha512:hash:base64:7].[ext]'
    },
  ]
}

fonts.css

@font-face {
  font-family: FontAwesome;
  font-weight: normal;
  font-style: normal;
  src: url('../fonts/icon-fonts/fontawesome.woff2') format('woff2');
}

ma​​in.component.js

import fonts from '../assets/styles/fonts.css'
import React from 'react'

export class App extends React.Component {
  ...
}

输出

【问题讨论】:

    标签: webpack data-uri urlloader


    【解决方案1】:

    不确定 url-loader 是否能够内联字体,但我猜不是。为此,您可以使用base64-inline-loader

    注意:

    显示的示例对我不起作用,因为它仍然导出文件。

    {
       test: /\.(jpe?g|png|ttf|eot|svg|woff(2)?)(\?[a-z0-9=&.]+)?$/,
       use: 'base64-inline-loader?limit=1000&name=[name].[ext]'
    }
    

    但是,一旦我从规则中删除了名称,它就像一个魅力

    {
      test: /\.(jpe?g|png|ttf|eot|svg|woff(2)?)(\?[a-z0-9=&.]+)?$/,
      use: 'base64-inline-loader'
    }
    

    【讨论】:

    • 请注意,使用最新版本的 webpack 和 css-loader,我们需要在规则中包含适当的资产类型,如下所示:{test: /\.(css|woff(2)?)(\?[a-z0-9=&.]+)?$/,use: ['base64-inline-loader'], type: 'javascript/auto'},更多详细信息请参见此处:webpack.js.org/指南/资产模块/#general-asset-type
    猜你喜欢
    • 2016-08-14
    • 2018-12-03
    • 2017-11-25
    • 2018-08-11
    • 2018-12-02
    • 2019-02-24
    • 2018-09-22
    • 1970-01-01
    • 2015-12-22
    相关资源
    最近更新 更多