VitePress 代码块图标插件
vitepress-plugin-group-icons 插件用于增强 VitePress 的代码块功能。可以自动填充代码块缺少的产品图标。
入门
安装
sh
npm install vitepress-plugin-group-icons
sh
yarn add vitepress-plugin-group-icons
sh
pnpm add vitepress-plugin-group-icons
sh
bun add vitepress-plugin-group-icons
配置
.vitepress/config.ts
ts
import { defineConfig } from 'vitepress'
import {
groupIconMdPlugin,
groupIconVitePlugin
} from 'vitepress-plugin-group-icons'
export default defineConfig({
markdown: {
config(md) {
md.use(groupIconMdPlugin)
}
},
vite: {
plugins: [groupIconVitePlugin()]
}
})
.vitepress/theme/index.ts
ts
import Theme from 'vitepress/theme'
import 'virtual:group-icons.css'
export default Theme
用法
填充图标
自动填充代码块缺少的产品图标。
输入:
md::: code-group ```sh [npm] npm install vitepress-plugin-group-icons ``` ```sh [yarn] yarn add vitepress-plugin-group-icons ``` ```sh [pnpm] pnpm add vitepress-plugin-group-icons ``` ```sh [bun] bun add vitepress-plugin-group-icons ``` :::
输出:
shnpm install vitepress-plugin-group-icons
shyarn add vitepress-plugin-group-icons
shpnpm add vitepress-plugin-group-icons
shbun add vitepress-plugin-group-icons
标题栏
为代码块添加带有图标和名称的标题栏。
输入
md```js [vite.config.js] import legacy from '@vitejs/plugin-legacy' import { defineConfig } from 'vite' export default defineConfig({ plugins: [ legacy({ targets: ['defaults', 'not IE 11'] }) ] }) ```
输出
vite.config.jsjsimport legacy from '@vitejs/plugin-legacy' import { defineConfig } from 'vite' export default defineConfig({ plugins: [ legacy({ targets: ['defaults', 'not IE 11'] }) ] })
包含代码段
如果你还想为代码段添加标题栏:
.vitepress/config.ts
ts
export default defineConfig({
markdown: {
config(md) {
md.use(groupIconMdPlugin, {
titleBar: { includeSnippet: true }
})
}
}
})
内置图标
包管理器
框架
打包器
配置文件
文件扩展名
图标映射
builtin.ts
ts
export const builtinIcons = {
// package managers
pnpm: 'vscode-icons:file-type-light-pnpm',
npm: 'vscode-icons:file-type-npm',
yarn: 'vscode-icons:file-type-yarn',
bun: 'vscode-icons:file-type-bun',
deno: 'vscode-icons:file-type-deno',
// frameworks
vue: 'vscode-icons:file-type-vue',
svelte: 'vscode-icons:file-type-svelte',
angular: 'vscode-icons:file-type-angular',
react: 'vscode-icons:file-type-reactjs',
next: 'vscode-icons:file-type-light-next',
nuxt: 'vscode-icons:file-type-nuxt',
solid: 'logos:solidjs-icon',
astro: 'vscode-icons:file-type-light-astro',
// bundlers
rollup: 'vscode-icons:file-type-rollup',
webpack: 'vscode-icons:file-type-webpack',
vite: 'vscode-icons:file-type-vite',
esbuild: 'vscode-icons:file-type-esbuild',
// configuration files
'package.json': 'vscode-icons:file-type-node',
'tsconfig.json': 'vscode-icons:file-type-tsconfig',
'.npmrc': 'vscode-icons:file-type-npm',
'.editorconfig': 'vscode-icons:file-type-editorconfig',
'.eslintrc': 'vscode-icons:file-type-eslint',
'.eslintignore': 'vscode-icons:file-type-eslint',
'eslint.config': 'vscode-icons:file-type-eslint',
'.gitignore': 'vscode-icons:file-type-git',
'.gitattributes': 'vscode-icons:file-type-git',
'.env': 'vscode-icons:file-type-dotenv',
'.env.example': 'vscode-icons:file-type-dotenv',
'.vscode': 'vscode-icons:file-type-vscode',
'tailwind.config': 'vscode-icons:file-type-tailwind',
'uno.config': 'vscode-icons:file-type-unocss',
'unocss.config': 'vscode-icons:file-type-unocss',
'.oxlintrc': 'vscode-icons:file-type-oxlint',
'vue.config': 'vscode-icons:file-type-vueconfig',
// filename extensions
'.mts': 'vscode-icons:file-type-typescript',
'.cts': 'vscode-icons:file-type-typescript',
'.ts': 'vscode-icons:file-type-typescript',
'.tsx': 'vscode-icons:file-type-typescript',
'.mjs': 'vscode-icons:file-type-js',
'.cjs': 'vscode-icons:file-type-js',
'.json': 'vscode-icons:file-type-json',
'.js': 'vscode-icons:file-type-js',
'.jsx': 'vscode-icons:file-type-js',
'.md': 'vscode-icons:file-type-markdown',
'.py': 'vscode-icons:file-type-python',
'.ico': 'vscode-icons:file-type-favicon',
'.html': 'vscode-icons:file-type-html',
'.css': 'vscode-icons:file-type-css',
'.scss': 'vscode-icons:file-type-scss',
'.yml': 'vscode-icons:file-type-light-yaml',
'.yaml': 'vscode-icons:file-type-light-yaml',
'.php': 'vscode-icons:file-type-php'
}
自定义图标
你可以从 iconify、本地 svg 文件或 url 添加任何图标。
.vitepress/config.ts
ts
import { defineConfig } from 'vitepress'
import {
groupIconMdPlugin,
groupIconVitePlugin,
localIconLoader
} from 'vitepress-plugin-group-icons'
export default defineConfig({
markdown: {
config(md) {
md.use(groupIconMdPlugin)
}
},
vite: {
plugins: [
groupIconVitePlugin({
customIcon: {
'.mdx': 'vscode-icons:file-type-light-mdx',
babel: 'vscode-icons:file-type-babel',
vitepress: localIconLoader(
import.meta.url,
'../assets/vitepress.svg'
),
unplugin: 'https://unplugin.unjs.io/logo_light.svg'
}
})
]
}
})
命名图标
你还可以通过使用 ~icon~
语法来使用命名图标。
输入
md```[Docker ~vscode-icons:file-type-docker2~] Docker ```
输出
DockerDocker
默认标签
defaultLabels
选项允许你预加载特定标签的图标,确保它们在你的 CSS 中可用,即使它们没有出现在你当前的文档页面中。
js
import { defineConfig } from 'vitepress'
import {
groupIconMdPlugin,
groupIconVitePlugin
} from 'vitepress-plugin-group-icons'
export default defineConfig({
markdown: {
config(md) {
md.use(groupIconMdPlugin)
}
},
vite: {
plugins: [
groupIconVitePlugin({
defaultLabels: ['npm', 'yarn', 'pnpm', 'bun', 'deno']
})
]
}
})