Vite scss 如何引入本地 字体

Vite scss 如何引入本地 字体

最近在用 Vite 改造一个旧项目 Diary,遇到了好多从 Vue 转到 Vite 的问题。

这次这个问题是: scss 里本地字体引入的问题。

一、问题描述

可以看到下面的卡片字体,本来应该是 impact 的,但现在无法正常展示。

错误提示是这样的:

二、解决

代码还是原来 Vue 时的代码,所以需要改造一下:

我搜到的答案:

vite-ruby isuue 中的问题:

官网说明:https://vite-ruby.netlify.app/config/#watchadditionalpaths

所以我们只需要改一下 scss 里引入字段的部分,另外再在 vite.config.ts 中添加一个路径 resolve 就可以了。

先看一下我的目录结构:

我的 scss 是在 /src/scss, 字体是在 /src/scss/fonts

修改 _fonts.scss 文件

css 复制代码
@font-face {
  font-family: "ImpactDiary";
  src: url(@/scss/fonts/ImpactPureNumber.ttf);
}

@font-face {
  font-family: "JetBrainsMonoDiary";
  src: url(@/scss/fonts/JetBrainsMono-Regular.ttf);
}

@font-face {
  font-family: "Galvji";
  src: url(@/scss/fonts/Galvji.ttf);
  font-weight: normal;
}
@font-face {
  font-family: "Galvji";
  src: url(@/scss/fonts/Galvji-Bold.ttf);
  font-weight: bold;
}

再修改 vite.config.ts 文件,让其能识别 @ 开头的资源,添加 resolve.alias,如下:

js 复制代码
 resolve: {
      alias: {
          '@': resolve(__dirname, 'src'),  // 代码中使用的 @ 符号将被解释为 `/src` 文件夹
      },
 },

完整的 vite.config.ts 文件内容

ts 复制代码
import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
import svgLoader from "vite-svg-loader"
import { resolve } from 'path'


// https://vitejs.dev/config/
export default defineConfig({
    plugins: [
        vue(),
        svgLoader()
    ],
    resolve: {
        alias: {
            '@': resolve(__dirname, 'src'),  // 代码中使用的 @ 符号将被解释为 `/src` 文件夹
        },
    },
  })

三、结果

现在就显示正常了。

相关推荐
凹凸曼打不赢小怪兽20 分钟前
react 受控组件和非受控组件
前端·javascript·react.js
狂奔solar31 分钟前
分享个好玩的,在k8s上部署web版macos
前端·macos·kubernetes
qiyi.sky33 分钟前
JavaWeb——Web入门(8/9)- Tomcat:基本使用(下载与安装、目录结构介绍、启动与关闭、可能出现的问题及解决方案、总结)
java·前端·笔记·学习·tomcat
清云随笔1 小时前
axios 实现 无感刷新方案
前端
鑫宝Code1 小时前
【React】状态管理之Redux
前端·react.js·前端框架
忠实米线1 小时前
使用pdf-lib.js实现pdf添加自定义水印功能
前端·javascript·pdf
pink大呲花1 小时前
关于番外篇-CSS3新增特性
前端·css·css3
少年维持着烦恼.1 小时前
第八章习题
前端·css·html
我是哈哈hh1 小时前
HTML5和CSS3的进阶_HTML5和CSS3的新增特性
开发语言·前端·css·html·css3·html5·web
田本初2 小时前
如何修改npm包
前端·npm·node.js