Несколько недель назад Vercel выпустила Next.js 13, а вместе с ним невероятно полезный инструмент: Оптимизированные шрифты.
Это делает очень простым использование, например, Google Fonts в вашем приложении, с преимуществом самостоятельного размещения файлов. Это означает более быстрое время загрузки, большую конфиденциальность для пользователей и меньше проблем с ручной загрузкой шрифтов.
Вот как использовать функцию «Оптимизированные шрифты» с Tailwind в приложении Next.js 13.
Во-первых, убедитесь, что вы обновились до Next.js 13 (да!)
Изменения в _app.tsx
Теперь перейдите к файлу _app.tsx и импортируйте понравившийся шрифт Google:
import { Lora } from '@next/font/google';
Затем мы создаем экземпляр импортированного шрифта и добавляем к нему некоторые настройки:
const lora = Lora({
subsets: ['latin'],
});
Теперь шрифт загружен, но как его применить?
К сожалению, Next.js случайным образом переименовывает свойство семейства шрифтов, поэтому мы не можем просто использовать Lora в нашем CSS. И хотя есть возможность автоматически устанавливать имя переменной CSS с помощью Next.js, похоже, это не работает с версией 13.0.2 @next/font. Итак, делаем сами:
По-прежнему в файле _app.tsx добавьте к выходным данным вашей функции следующее:
<style jsx global>
{`
:root {
--lora-font: ${lora.style.fontFamily};
}
`}
</style>
Это вручную определит переменную CSS для нашего шрифта.
Таким образом, это наш готовый к копированию и вставке файл _app.tsx.
import { Lora } from '@next/font/google';
import { AppProps } from 'next/app';
import '@/styles/globals.css';
const lora = Lora({
subsets: ['latin'],
});
function MyApp({ Component, pageProps }: AppProps) {
return (
<>
<style jsx global>
{`
:root {
--lora-font: ${lora.style.fontFamily};
}
`}
</style>
<Component {...pageProps} />;
</>
);
}
export default MyApp;
Настройка файла tailwind.config.js
Наконец, нам нужно перенастроить Tailwind для использования этого шрифта. К счастью, здесь мы также можем использовать нашу переменную CSS.
Просто убедитесь, что ваш файл tailwind.config.js выглядит примерно так:
const { fontFamily } = require('tailwindcss/defaultTheme');
/** @type {import('tailwindcss').Config} */
module.exports = {
// ...
theme: {
extend: {
fontFamily: {
primary: ['var(--lora-font)', ...fontFamily.sans],
serif: ['var(--lora-font)', ...fontFamily.serif],
},
}
},
// ...
};
Вот и все!
Я почти уверен, что в ближайшие месяцы этот процесс станет проще, когда функция станет зрелой, поэтому пожалуйста, оставьте комментарий, если вы нашли лучший способ добавить оптимизированные шрифты в Tailwind. Постараюсь сохранить как живой документ :)
Продолжайте кодировать!