代码块(CodeBlock)显示语言名称
Docusaurus自带的CodeBlock在右上角并不显示代码语言的名称,如果想要显示语言名称则需要使用Swizzling
对代码块组件进行修改。
修改的组件为 CodeBlock/Content/String
。在WordWrapButton
左侧,显示代码语言的名称。
生成Swizzling
本功能需要使用 eject
模式。
- npm
- Yarn
- pnpm
npm run swizzle @docusaurus/theme-classic CodeBlock/Content/String -- --eject
yarn swizzle @docusaurus/theme-classic CodeBlock/Content/String --eject
pnpm run swizzle @docusaurus/theme-classic CodeBlock/Content/String --eject
Note
注意:以上命令只会生成 CodeBlock/Content/String
,并不会附带 CodeBlock/Content/styles.module.css
。需要单独添加 styles.module.css
src/theme/CodeBlock/Content/styles.module.css
也可以选择直接生成 CodeBlock/Content
,然后修改 CodeBlock/Content/String
- npm
- Yarn
- pnpm
npm run swizzle @docusaurus/theme-classic CodeBlock/Content -- --eject
yarn swizzle @docusaurus/theme-classic CodeBlock/Content --eject
pnpm run swizzle @docusaurus/theme-classic CodeBlock/Content --eject
最终代码结构如下:
src/theme/CodeBlock/Content
|-- String.tsx
|-- styles.module.css
添加显示语言名称的内容
src/theme/CodeBlock/Content/String.tsx
...
<div className={styles.buttonGroup}>
{language && <span className={styles.languageName}>{language}</span>}
{(wordWrap.isEnabled || wordWrap.isCodeScrollable) && (
<WordWrapButton
className={styles.codeButton}
onClick={() => wordWrap.toggle()}
isEnabled={wordWrap.isEnabled}
/>
)}
<CopyButton className={styles.codeButton} code={code}/>
</div>
...
添加样式
在 src/theme/CodeBlock/Content/styles.module.css
中增加样式
src/theme/CodeBlock/Content/styles.module.css
.languageName {
font-size: 0.9rem;
color: rgb(153, 153, 136);
text-transform: uppercase;
line-height: 34px;
font-family: var(--ifm-font-family-monospace);
}
效果
