鹏星
580 字
3 分钟
增强Fuwari的代码块功能
使用现在最新的🍥Fuwari博客已经引入了
astro-expressive-code包,不需要额外安装了,直接使用就完事了折叠与行数都已经配置好了,
@expressive-code/plugin-collapsible-sections与@expressive-code/plugin-line-numbers不用额外安装
使用格式方法
标题
console.log("Line 1");console.log("Line 2");let a = 1;let b = 2;高亮指定行
console.log("Line 1");console.log("Line 2");let a = 1;let b = 2;let c = 3;let d = 4;let e = 5;let f = 6;let g = 7;console.log(a + b);let h = 4;let i = 5;let j = 6;let k = 7;let l = 7;新增/删除指定行
console.log("Line 1");console.log("Line 2");let a = 1;let b = 2;let c = 3;let d = 4;let e = 5;let f = 6;let g = 7;console.log(a + b);let h = 4;let i = 5;let j = 6;let k = 7;let l = 7;高亮块
```js "a + b" del="let g = 7"//{2,4-5}高亮 ins={3,7}新增 del={6}删除console.log("Line 1");console.log("Line 2");let a = 1;let b = 2;let c = 3;let d = 4;let e = 5;let f = 6;let g = 7;console.log(a + b);let h = 4;let i = 5;let j = 6;let k = 7;let l = 7;折叠代码/代码行数
//collapse={8-13, 15-16} 折叠 startLineNumber=7console.log("Line 1");console.log("Line 2");let a = 1;let b = 2;let c = 3;let d = 4;6 collapsed lines
let e = 5;let f = 6;let g = 7;console.log(a + b);let h = 4;let i = 5;let j = 6;2 collapsed lines
let k = 7;let l = 7;代码块标识
这是一个Expressive Code的插件,增加代码块的语言标识图标
# 使用 npmnpm install @xt0rted/expressive-code-file-icons --save
# 如果用 pnpm(从报错中的 .pnpm 来看可能是你的包管理器)pnpm add @xt0rted/expressive-code-file-icons这是博主的设置,修改样式后需删除项目里的📁.astro,并重启项目才能看到效果
import { pluginFileIcons } from "@xt0rted/expressive-code-file-icons";
export default defineConfig({ // ... integrations: [ // ... expressiveCode({ themes: ["catppuccin-frappe", "light-plus"], plugins: [pluginCollapsibleSections(), pluginLineNumbers(), pluginFileIcons({ iconClass: "text-4 w-5 inline mr-1 mb-1", titleClass: "" }) ], }), ]})提醒不过有些标识图标不适用双主题,比如 Astro 下面是博主的临时解决办法(针对Astro)
onMount(() => { mode = getStoredTheme(); updateAstroSvg(mode); const darkModePreference = window.matchMedia("(prefers-color-scheme: dark)"); const changeThemeWhenSchemeChanged: Parameters< typeof darkModePreference.addEventListener<"change"> >[1] = (_e) => { applyThemeToDocument(mode); }; darkModePreference.addEventListener("change", changeThemeWhenSchemeChanged); return () => { darkModePreference.removeEventListener( "change", changeThemeWhenSchemeChanged, ); };});
function switchScheme(newMode: LIGHT_DARK_MODE) { mode = newMode; setTheme(newMode); updateAstroSvg(mode);}function updateAstroSvg(mode: LIGHT_DARK_MODE) { const spans = document.querySelectorAll('figcaption > .title') spans.forEach(span => { if (!span || !span.innerHTML.includes('astro')) return
const paths = span.querySelectorAll('svg > path') if (mode === DARK_MODE){ paths[1].setAttribute('fill', '#fff') } else{ paths[1].setAttribute('fill', '#000') } })} 增强Fuwari的代码块功能
https://pengxing.dpdns.org/posts/增强fuwari的代码块功能/