| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- import {
- defineConfig,
- resolveSiteDataByRoute,
- type HeadConfig
- } from 'vitepress'
- import {
- groupIconMdPlugin,
- groupIconVitePlugin,
- localIconLoader
- } from 'vitepress-plugin-group-icons'
- import llmstxt from 'vitepress-plugin-llms'
- const prod = !!process.env.NETLIFY
- export default defineConfig({
- title: 'VitePress',
- rewrites: {
- 'en/:rest*': ':rest*'
- },
- lastUpdated: true,
- cleanUrls: true,
- metaChunk: true,
- markdown: {
- math: true,
- codeTransformers: [
- // We use `[!!code` in demo to prevent transformation, here we revert it back.
- {
- postprocess(code) {
- return code.replace(/\[\!\!code/g, '[!code')
- }
- }
- ],
- config(md) {
- // TODO: remove when https://github.com/vuejs/vitepress/issues/4431 is fixed
- const fence = md.renderer.rules.fence!
- md.renderer.rules.fence = function (tokens, idx, options, env, self) {
- const { localeIndex = 'root' } = env
- const codeCopyButtonTitle = (() => {
- switch (localeIndex) {
- case 'es':
- return 'Copiar código'
- case 'fa':
- return 'کپی کد'
- case 'ko':
- return '코드 복사'
- case 'pt':
- return 'Copiar código'
- case 'ru':
- return 'Скопировать код'
- case 'zh':
- return '复制代码'
- default:
- return 'Copy code'
- }
- })()
- return fence(tokens, idx, options, env, self).replace(
- '<button title="Copy Code" class="copy"></button>',
- `<button title="${codeCopyButtonTitle}" class="copy"></button>`
- )
- }
- md.use(groupIconMdPlugin)
- }
- },
- sitemap: {
- hostname: 'https://vitepress.dev',
- transformItems(items) {
- return items.filter((item) => !item.url.includes('migration'))
- }
- },
- /* prettier-ignore */
- head: [
- ['link', { rel: 'icon', type: 'image/svg+xml', href: '/vitepress-logo-mini.svg' }],
- ['link', { rel: 'icon', type: 'image/png', href: '/vitepress-logo-mini.png' }],
- ['meta', { name: 'theme-color', content: '#5f67ee' }],
- ['meta', { property: 'og:type', content: 'website' }],
- ['meta', { property: 'og:site_name', content: 'VitePress' }],
- ['meta', { property: 'og:image', content: 'https://vitepress.dev/vitepress-og.jpg' }],
- ['meta', { property: 'og:url', content: 'https://vitepress.dev/' }],
- ['script', { src: 'https://cdn.usefathom.com/script.js', 'data-site': 'AZBRSFGG', 'data-spa': 'auto', defer: '' }]
- ],
- themeConfig: {
- logo: { src: '/vitepress-logo-mini.svg', width: 24, height: 24 },
- socialLinks: [
- { icon: 'github', link: 'https://github.com/vuejs/vitepress' }
- ],
- search: {
- provider: 'algolia',
- options: {
- appId: '8J64VVRP8K',
- apiKey: '52f578a92b88ad6abde815aae2b0ad7c',
- indexName: 'vitepress'
- }
- },
- carbonAds: { code: 'CEBDT27Y', placement: 'vuejsorg' }
- },
- locales: {
- root: { label: 'English' },
- zh: { label: '简体中文' },
- pt: { label: 'Português' },
- ru: { label: 'Русский' },
- es: { label: 'Español' },
- ko: { label: '한국어' },
- fa: { label: 'فارسی' }
- },
- vite: {
- plugins: [
- groupIconVitePlugin({
- customIcon: {
- vitepress: localIconLoader(
- import.meta.url,
- '../public/vitepress-logo-mini.svg'
- ),
- firebase: 'logos:firebase'
- }
- }),
- prod &&
- llmstxt({
- workDir: 'en',
- ignoreFiles: ['index.md']
- })
- ]
- },
- transformPageData: prod
- ? (pageData, ctx) => {
- const site = resolveSiteDataByRoute(
- ctx.siteConfig.site,
- pageData.relativePath
- )
- const title = `${pageData.title || site.title} | ${pageData.description || site.description}`
- ;((pageData.frontmatter.head ??= []) as HeadConfig[]).push(
- ['meta', { property: 'og:locale', content: site.lang }],
- ['meta', { property: 'og:title', content: title }]
- )
- }
- : undefined
- })
|