Next.js13のnext/fontを、Tailwindcss, Windicssでfont-○○のように使う
Next.js v13で追加されたnext/fontを、Tailwind css、Windi cssに導入してみました
Tailwind cssでnext/fontを使う
既にNext.js 13、Tailwindがセットアップ出来ている状態で進めます
もし、まだv13にアップグレードしていない方は、こちらの記事を参考にしてくれると嬉しいです!
Tailwind cssの導入は公式ドキュメントが分かりやすいです!
①next/fontをインストール
npm install @next/font
or
yarn add @next/font
②Google Fontsから、フォントを探す
ここから、フォントを探します。
ここでは、Lora, Inter, Kenia, Dancing Script
を使います
③fontを読み込む
pages/_app.tsx
内で、Google Fontsを読み込みます。globalなcssでfontを定義することで、どこからでも使えるようにします。
Dancing Script
のように、空白を含むフォントは、Dancing_Script
を入れるので注意して下さい
kenia
は、font-weightを指定しないと怒られるので、こちらのように指定します。
const kenia = Kenia({weight: '400'})
import { Lora, Inter, Kenia, Dancing_Script } from '@next/font/google'
import '../styles/globals.css'
import type { AppProps } from 'next/app'
const lora = Lora()
const inter = Inter()
const dancing = Dancing_Script()
const kenia = Kenia({ weight: '400' })
export default function App({ Component, pageProps }: AppProps) {
return (
<div>
<Component {...pageProps} />
<style jsx global>
{`
:root {
--font-inter: ${inter.style.fontFamily};
--font-lora: ${lora.style.fontFamily};
--font-kenia: ${kenia.style.fontFamily};
--font-dancing: ${dancing.style.fontFamily};
}
`}
</style>
</div>
)
}
④tailwind.config.jsでfontFamilyを拡張する
今回読み込んだLora, Inter, Kenia, Dancing Script
を、Tailwind cssのfont-○○
のように使うので、tailwind.config.js
のtheme
からfontFamily
を拡張します
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
"./pages/**/*.{js,ts,jsx,tsx}",
"./components/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {
+ fontFamily: {
+ inter: ['var(--font-inter)'],
+ lora: ['var(--font-lora)'],
+ kenia: ['var(--font-kenia)'],
+ dancing: ['var(--font-dancing)'],
+ },
},
},
plugins: [],
}
⑤classを付ける
pages/index.tsx
で、こちらのようにフォントを指定してみます
font-inter
, font-lora
, font-kenia
, font-dancing
をクラスに追加することで使えます
export default function Home() {
return (
<div className='max-w-[600px] mx-auto'>
<h1 className='text-[100px] text-red-500'>aa</h1>
<div className='text-3xl'>
<p className='font-inter'>font-inter: Apple123こんにちは</p>
<p className='font-lora'>font-lora: Apple123こんにちは</p>
<p className='font-kenia'>font-kenia: Apple123こんにちは</p>
<p className='font-dancing'>font-dancing: Apple123こんにちは</p>
</div>
</div>
)
}
⑥buildする
最後に、buildをして確認します
npm run build
npm run start
or
yarn build
yarn start
すると、フォントが適用されます!
buildしないと、フォントが効かなかったので焦ってました笑
Windi cssでnext/fontを使う
Tailwind cssの時とやっていることは同じです。
①、②、③、⑤、⑥番はそのままで、④番だけ変わります。
windi cssの導入はTailwind cssよりも簡単に導入出来ます!
記事の最後にインストール方法も書いときます
④windi.config.jsでfontFamilyを拡張する
Tailwind cssの時と同様に、windi.config.js
のtheme
からfontFamily
を拡張します
import { defineConfig } from 'windicss/helpers'
export default defineConfig({
extract: {
include: ['**/*.{jsx,tsx,css}'],
exclude: ['node_modules', '.git', '.next'],
},
theme: {
extend: {
+ fontFamily: {
+ inter: ['var(--font-inter)'],
+ lora: ['var(--font-lora)'],
+ kenia: ['var(--font-kenia)'],
+ dancing: ['var(--font-dancing)'],
+ },
},
},
})
これでnext/fontが使えるようになります!
おまけ windi cssの導入
- windi cssのインストール
yarn add windicss-webpack-plugin -D
or
npm i windicss-webpack-plugin -D
-
next.config.js
の中身を変更する
const WindiCSSWebpackPlugin = require('windicss-webpack-plugin')
module.exports = {
// ...
webpack(config) {
config.plugins.push(new WindiCSSWebpackPlugin())
return config
},
}
-
pages/_app.tsx
に以下を追加する
// eslintのimportエラーが出る時に、このコメントを追加
// eslint-disable-next-line import/no-unresolved
import 'windi.css'
- プロジェクト直下に
windi.config.js
を作成
import { defineConfig } from 'windicss/helpers'
export default defineConfig({
extract: {
include: ['**/*.{jsx,tsx,css}'],
exclude: ['node_modules', '.git', '.next'],
},
})
以上!結構簡単に導入出来ますね
参考サイト
Discussion