css - 字体不会通过 webpack 加载

标签 css fonts webpack webpack-2

亲爱的 webpack 社区,您好。 我拼命尝试使用文件加载器加载字体 我尝试了这两个规则:

{ test: /\.(woff|eot|svg|otf|ttf)$/i, loader: `file-loader`, options: {name:'fonts/[name].[ext]'}},
{ test: /\.(woff|eot|svg|otf|ttf)$/i, loader: `file-loader?name=fonts/[name].[ext]`},

然而,不幸的是,当在@font-face 规则中要求时,字体不会被提取:

@font-face {
    font-family: 'Example';
    font-style: normal;
    font-weight: 400;
    src: url('../fonts/Example.ttf') format('truetype');
}

我的元素结构是这样的:

structure

这是 Webpack 输出:

webpack output

虽然加载了 fonts.less,但我没有看到通过 src() 的定义加载任何字体。

非常感谢您的任何提前提示!

在这里查看完整的配置文件:https://gist.github.com/MartinMuzatko/2873b52fed204bd6e8aaaa94527e34a9

最佳答案

问题是您正在使用 raw-loaderless-loader 的输出转换为 JavaScript,以便 extract-text-webpack-插件可以使用它。

{
    test: /\.less$/, use: ExtractTextPlugin.extract(
        [
            {loader:'raw'},
            {loader:'less'}
        ]
    ),
}

less-loader 简单地将 Less 语法转换为常规 CSS。 url() 不会被触及。 css-loader另一方面将它们视为 webpack 将解析的导入。只有这样你的字体规则才会生效。您需要做的就是更改您的 .less 规则以使用 css-loader 而不是 raw-loader:

{
    test: /\.less$/, use: ExtractTextPlugin.extract(
        [
            {loader:'css'},
            {loader:'less'}
        ]
    ),
}

关于css - 字体不会通过 webpack 加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42999386/

相关文章:

html - Inline-flex 正在为元素添加额外的垂直空间

css - 查找用户成员(member)计划 WooCommerce

webpack - 如何仅使用 Webpack 导入 _global.scss 文件一次,而不是在每个 .scss 文件中导入?

reactjs - React-create-app 中 babel loader 的问题

node.js - Webpack-NodeJS-找不到模块 : Error: Can't resolve 'fs'

javascript - 使用动态内容调整父元素的大小

javascript - 如何使用 queryselectorAll 方法获取多个 div id

php - 有没有办法判断字体是否支持 Imagick 中的给定字符?

javascript - 交换 css 字体时是否发出 js 事件?

css - 如何使用 CSS3 转换字体样式?