当尝试在 Vue CLI 3 中加载自定义本地字体时,字体仍然不会出现。我没有收到任何错误消息。检查器显示正在加载正确的规则,但字体在#app 上回落到 serif
。字体没有出现在我的 dist 文件夹中的任何地方。
我尝试在 vue.config.js 中添加加载器,更改 url 路径,将 @font-face 规则移动到不同的位置,将公共路径更改为“”和“/”,将 scss 导入 main.js。
字体加载:
@font-face {
font-family: 'OpenSans-Regular';
src: url('/assets/fonts/OpenSans-Regular.eot');
src: url('/assets/fonts/OpenSans-Regular.eot?#iefix') format('embedded-opentype'),
url('/assets/fonts/OpenSans-Regular.otf') format('font-opentype'),
url('/assets/fonts/OpenSans-Regular.woff') format('font-woff'),
url('/assets/fonts/OpenSans-Regular.ttf') format('font-truetype'),
url('/assets/fonts/OpenSans-Regular.svg#OpenSans-Regular') format('svg');
font-weight: normal;
font-style: normal;
}
并在 App.vue 中使用:
<style lang="scss">
#app {
font-family: 'OpenSans-Regular', serif;
}
</style>
该样式位于我的 main.scss
文件中。文件结构如下:
src
assets
fonts
OpenSans-Regular.eot
OpenSans-Regular.woff
etc
styles
main.scss
App.vue
vue.config.js
vue.config.js
文件如下:
module.exports = {
publicPath: '/',
css: {
sourceMap: true,
loaderOptions: {
sass: {
data: `@import "@/styles/main.scss";`
}
}
},
configureWebpack: {
module: {
rules: [{
test: /\.(ttf|otf|eot|woff|woff2)$/,
use: {
loader: "file-loader",
options: {
name: "fonts/[name].[ext]",
},
},
}]
}
}
}
我还在 --- 中尝试了一个 chainWebpack vue.config.js
无济于事:
chainWebpack: config => {
config
.module
.rule("file")
.test(/\.(woff2?|eot|ttf|otf)(\?.*)?$/,)
.use("url-loader")
.loader("url-loader")
.options({
limit: 10000,
name: 'assets/fonts/[name].[ext]'
})
.end();
}
原文由 P. Jack 发布,翻译遵循 CC BY-SA 4.0 许可协议
你试过了吗
适用于我 Vue CLI 3,没有
vue.config.js
设置。我正在像这样加载我的样式:
不确定这是否是好的做法。