ことの流れ
Nuxt3 x Vuetify3の環境で、Vuetifyのデフォルトのfont-familyを上書きしたかった。
調べたところ、Vuetifyの変数を書き換えると良いことがわかった。
今回は、なんとか変数の書き換え方(仮)を編み出したので、書き留めておく。
※ただし、下のようなWARNが大量に出る…。
WARN Sourcemap for "plugin-vuetify:components/VKbd/VKbd.sass" points to missing source files
なお、Nuxt3でVuetify3を使う方法は以下の記事を参照されたし。
やったこと
settings.scss
assetsディレクトリの中にsettings.scssを作成する。
今回はBIZ UDPGothicを設定したいので、以下のように書く。
$font: "BIZ UDPGothic", sans-serif;
@use "vuetify/settings" with (
$body-font-family: $font
);
main.scss
下記の読み込みを削除する。※削除だよ!!
@use "vuetify/styles";
vuetify.ts
2で削除したVuetifyの大元?になるファイルをvuetify.tsに読み込む
import "vuetify/styles";
参考までに私のvuetify.tsを貼っておく。
import { createVuetify } from "vuetify";
import { aliases, mdi } from "vuetify/iconsets/mdi-svg";
import {
MAIN_THEME,
mainTheme,
MAIN_DARK_THEME,
mainDarkTheme,
} from "@/helpers/themes";
import { defaults } from "@/helpers/defaults";
import * as components from "vuetify/components";
import * as directives from "vuetify/directives";
import "vuetify/styles";
export default defineNuxtPlugin((nuxtApp) => {
const vuetify = createVuetify({
components,
directives,
ssr: true,
defaults,
display: {
mobileBreakpoint: "sm",
},
icons: {
defaultSet: "mdi",
aliases,
sets: {
mdi,
},
},
theme: {
defaultTheme: MAIN_DARK_THEME,
themes: {
mainTheme,
mainDarkTheme,
},
variations: {
colors: ["primary", "secondary", "accent"],
lighten: 9,
darken: 9,
},
},
});
nuxtApp.vueApp.use(vuetify);
});
nuxt.config.ts
Google Fontsより、linkタグをコピーし、設定。
BIZ UDPGothicの場合は下のようになった。
app: {
head: {
link: [
{
rel: "preconnect",
href: "https://fonts.googleapis.com",
},
{
rel: "stylesheet",
href: "https://fonts.gstatic.com",
crossorigin: "anonymous",
},
{
rel: "stylesheet",
href: "https://fonts.googleapis.com/css2?family=BIZ+UDPGothic:wght@400;700&display=swap",
},
],
},
},
続いて、hooksの部分を修正。
※私の場合、srcDirをappに変更しているので、頭にapp/をつけているが、通常はいらない。
hooks: {
"vite:extendConfig": (config) => {
config.plugins!.push(
vuetify({
styles: {
configFile: new URL("app/assets/settings.scss", import.meta.url).pathname,
},
})
);
},
},
表示確認
念のため表示確認を。
感想
WARNをなくしたい。すごく邪魔。