javascript - Webpack 5字体资产问题,没有错误但也没有字体
问题描述
我正在尝试在我的 scss 文件中使用 @font-face 声明。
正在应用正确的 CSS 规则,因此 font-face 声明看起来不错。路径也正在得到解决,所以这没有问题。而且,webpack 不会抛出任何错误,因此它似乎不是任何类型的加载程序问题。但最终,字体仍然没有被浏览器渲染。(见图)
从 Webpack 5 开始,文档声明您可以在规则中声明“type: 'asset/resource'”以正确加载诸如字体或图像之类的资产。它适用于我加载的图像,但不适用于字体。
CSS:
@font-face {
font-family: 'Yusei Magic', sans-serif;
font-style: normal;
font-weight: 400;
src: url('./assets/fonts/yusei-magic/YuseiMagic-Regular.ttf')
format('truetype');
}
网络包配置:
module: {
...
rules: [
...
{
test: /\.ttf$/,
type: 'asset/resource',
},
],
},
解决方案
由于字体是由 css 函数引用的url()
,因此也需要添加负责的 Webpack 加载器。
如果没有安装:
npm install --save-dev style-loader css-loader
规则堆栈应如下所示:
rules: [
...
{
test: /\.css$/i,
use: ['style-loader', 'css-loader'],
},
{
test: /\.(woff|woff2|eot|ttf|otf)$/i,
type: 'asset/resource',
},
...
]
可以在此处 (loading-css)和此处 (loading-fonts)找到详细信息。
css-loader
解释@import
和url()
喜欢import/require()
并将解决它们。
推荐阅读
- google-api - Stenciljs 中的 Google 地址自动完成 api
- r - 使用 dplyr::mutate 重新编码,而不是在函数中工作
- javascript - Javascript不再更新输入字段的值
- r - 单独数据框中的配色方案
- ruby - 当我使用服务时 render :new 不再工作
- c++ - std::source_location 作为非类型模板参数
- terraform - 为什么 Terraform 使用表达式“插值”
- spring-boot - 如何启用 /refresh Actuator 端点并绕过 CSRF 限制?
- java - 使用 bukkit 加载地图的问题
- java - 如何使用 IText7 创建 QR 码的示例