【发布时间】:2019-08-19 05:08:31
【问题描述】:
我为 React Web 应用程序设置了 webpack4+babel 捆绑器。在 LESS 文件中,我引用了本地字体。该字体在构建时被复制到dist 文件夹,并且其文件名是散列的。我希望能够预加载此字体。
这是我的 LESS 文件:
@font-face {
font-family: 'Test';
src: url('../fonts/test.ttf') format('truetype');
font-weight: 400;
}
我尝试了以下方法,但到目前为止都没有成功:
- 将自定义导入添加到我的应用的主 JS 文件中。
import(/* webpackPreload: true */ "../fonts/test.ttf");
这是我的.babelrc 文件:
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-syntax-dynamic-import"
]
}
运行 webpack 不会在任何地方产生预加载方向,就我在输出的 html 中看到的而言 - 我搜索了 dist 文件夹的内容,但一无所获。
- preload-webpack-plugin
我将此添加到我的webpack.config.js 文件中:
plugins: [
new HtmlWebpackPlugin(),
new PreloadWebpackPlugin({
rel: 'preload',
as(entry) {
if (/\.css$/.test(entry)) return 'style';
if (/\.woff$/.test(entry)) return 'font';
if (/\.png$/.test(entry)) return 'image';
return 'script';
}
})
]
这会为 JS 脚本文件包创建预加载,但不会为 CSS 和字体创建预加载。
关于如何让它发挥作用的任何想法?
【问题讨论】:
标签: reactjs babeljs webpack-4 preload