При попытке загрузить пользовательские локальные шрифты в Vue CLI 3 шрифты по-прежнему не отображаются. Я не получаю никаких сообщений об ошибках. Инспектор показывает правильное загружаемое правило, но шрифты возвращаются к serif
в #app. Шрифты нигде не отображаются в моей папке 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]",
},
},
}]
}
}
}
Я также пробовал цепочку веб-пакетов в 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();
}