Theme-ui/prism не будет работать с файлами разметки gatsbyjs
Я использую @theme-ui/prism для форматирования текста блока кода в файлах уценки. Плагин уценки, который я использую, - это gatsby-plugin-mdx. Кажется, это не работает, потому что у меня не появляется темный фон в блоке кода.
Вот что я сделал:
yarn add @theme-ui/prism
Создайте src/gatsby-plugin-theme-ui/components.ts:
import Prism from '@theme-ui/prism'
const components = {
pre: props => props.children,
code: Prism,
}
export default components
В src/gatsby-plugin-theme-ui/index.ts я определил стиль для pre
:
import nightOwl from '@theme-ui/prism/presets/night-owl.json';
import colors from "./colors";
import headings from "./headings";
const systemFonts =
'-apple-system, BlinkMacSystemFont, San Francisco, Helvetica Neue, Helvetica, Ubuntu, Roboto, Noto, Segoe UI, Arial, sans-serif';
const transition = '0.2s ease-out';
export default {
useColorSchemeMediaQuery: true,
colors,
initialColorMode: `dark`,
fonts: {
body: systemFonts,
heading: "Avenir Next",
monospace: 'Menlo, monospace'
},
fontSizes: [12, 14, 16, 24, 28, 36, 48, 64],
fontWeights: {
body: 400,
heading: 500,
bold: 600,
},
lineHeights: {
body: 1.7,
heading: 1.1275,
},
letterSpacings: {
body: 'normal',
caps: '0.2em'
},
breakpoints: [
'320px', '376px', '540px', '735px', '1070px', '1280px', '1640px', '1880px'
],
transition,
styles: {
root: {
fontFamily: 'body',
lineHeight: 'body',
fontWeight: 'body',
...headings
},
...headings,
p: {
my: 4,
},
a: {
color: 'secondary',
transition: `color ${transition}`,
':hover,:focus': {
color: 'text'
}
},
pre: {
...nightOwl,
fontFamily: `"Operator Mono", monospace`,
fontSize: '0.9rem',
tabSize: 4,
hyphens: `none`,
overflow: `auto`,
borderRadius: 6,
p: 3,
my: 4
},
inlineCode: {
color: `primary`,
background: `rgba(233, 218, 172, 0.15)`,
borderRadius: 3,
px: `0.4rem`,
py: `0.2rem`
},
table: {
width: '100%',
borderCollapse: 'separate',
borderSpacing: 0
},
th: {
textAlign: 'left',
borderBottomStyle: 'solid'
},
td: {
textAlign: 'left',
borderBottomStyle: 'solid'
}
}
}
1 ответ
Решение
Функция призмы, похоже, на самом деле предназначена для будущей версии theme-ui, поэтому по умолчанию (v0.3.x
на момент написания) не поддерживает его.
Чтобы решить эту проблему, вы можете изменить свой theme-ui*
а также gatsby-plugin-theme-ui
версии пакета для ^0.4.0-rc.1
(rc.3 фактически отсутствует, но банкомат сломан, поэтому не используйте его).
// package.json
{
...
"dependencies": {
"gatsby-plugin-theme-ui": "^0.4.0-rc.1",
"@theme-ui/prism": "^0.4.0-rc.1",
"theme-ui": "^0.4.0-rc.1",
}
}