mirror of
https://github.com/pengzhanbo/vuepress-theme-plume.git
synced 2026-04-23 10:58:13 +08:00
1 line
28 KiB
HTML
1 line
28 KiB
HTML
<!doctype html><html lang="zh-CN"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width,initial-scale=1" /><meta name="generator" content="VuePress 2.0.0-rc.28" /><meta name="theme" content="VuePress Theme Plume 1.0.0-rc.194" /><script id="check-mac-os">document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))</script><script id="check-dark-mode">;(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;const isDark = um === 'dark' || (um !== 'light' && sm);document.documentElement.dataset.theme = isDark ? 'dark' : 'light';})();</script><script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","headline":"贡献指南","image":[""],"dateModified":"2026-04-02T13:14:51.000Z","author":[]}</script><meta property="og:url" content="https://theme-plume.vuejs.press/contributing/"><meta property="og:site_name" content="Plume 主题"><meta property="og:title" content="贡献指南"><meta property="og:description" content="概览 项目仓库借助于 pnpm 工作空间 来实现 Monorepo ,存放了多个互相关联的独立 Package 。 主题于 theme 目录中进行开发维护。 插件于 plugins 目录中进行开发维护。 文档于 docs 目录中进行开发维护。 在 plugins 目录中: plugin-search: 为主题提供 全文模糊搜索 功能 plugin-md..."><meta property="og:type" content="article"><meta property="og:locale" content="zh-CN"><meta property="og:locale:alternate" content="en-US"><meta property="og:updated_time" content="2026-04-02T13:14:51.000Z"><meta property="article:modified_time" content="2026-04-02T13:14:51.000Z"><link rel="alternate" hreflang="en-us" href="https://theme-plume.vuejs.press/en/contributing/"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><meta name="google-site-verification" content="AaTP7bapCAcoO9ZGE67ilpy99GL6tYqtD30tRHjO9Ps"><title>贡献指南 | Plume 主题</title><meta name="description" content="概览 项目仓库借助于 pnpm 工作空间 来实现 Monorepo ,存放了多个互相关联的独立 Package 。 主题于 theme 目录中进行开发维护。 插件于 plugins 目录中进行开发维护。 文档于 docs 目录中进行开发维护。 在 plugins 目录中: plugin-search: 为主题提供 全文模糊搜索 功能 plugin-md..."><link rel="preload" href="/assets/style-BGtb9b_n.css" as="style"><link rel="stylesheet" href="/assets/style-BGtb9b_n.css"><link rel="modulepreload" href="/assets/app-CponcA4I.js"><link rel="modulepreload" href="/assets/plugin-vue_export-helper-CxTVcLa7.js"><link rel="modulepreload" href="/assets/chunk-DseTPa7n.js"><link rel="modulepreload" href="/assets/preload-helper-ca-nBW7U.js"><link rel="modulepreload" href="/assets/composables-LadtrrgZ.js"><link rel="modulepreload" href="/assets/VPHomeHero-DWhHhzVg.js"><link rel="modulepreload" href="/assets/composables-Dy7xAEJk.js"><link rel="modulepreload" href="/assets/client-DIGNuIZ_.js"><link rel="modulepreload" href="/assets/theme-colors-bZHGy5AR.js"><link rel="modulepreload" href="/assets/VPButton-DJaiL7ma.js"><link rel="modulepreload" href="/assets/runtime-core.esm-bundler-CZvn3YaB.js"><link rel="modulepreload" href="/assets/runtime-dom.esm-bundler-DTRCDnrc.js"><link rel="modulepreload" href="/assets/dist-CMy7OcvW.js"><link rel="modulepreload" href="/assets/codeRepl-DjcuOnVB.js"><link rel="modulepreload" href="/assets/VPCopyright-DUWF61Ht.js"><link rel="modulepreload" href="/assets/contributing-ByyC63H4.js"></head><body><div id="app"><!--[--><!--[--><div class="theme-plume vp-layout" vp-container data-v-a5aadcf6><!--[--><!--[--><!--]--><!--[--><span tabindex="-1" data-v-26bc9d93></span><a href="#VPContent" class="vp-skip-link visually-hidden" data-v-26bc9d93> Skip to content </a><!--]--><!----><header class="vp-nav" data-v-a5aadcf6 data-v-f81e37e9><div class="vp-navbar" vp-navbar data-v-f81e37e9 data-v-b90976a4><div class="wrapper" data-v-b90976a4><div class="container" data-v-b90976a4><div class="title" data-v-b90976a4><div class="vp-navbar-title" data-v-b90976a4 data-v-f77fe1b1><a class="vp-link link no-icon title" href="/" data-v-f77fe1b1><!--[--><!--[--><!--]--><!--[--><!--[--><!--[--><img class="vp-image dark logo" style="" src="/plume.png" alt data-v-414baac9><!--]--><!--[--><img class="vp-image light logo" style="" src="/plume.png" alt data-v-414baac9><!--]--><!--]--><!--]--><span data-v-f77fe1b1>Plume 主题</span><!--[--><!--]--><!--]--><!----></a></div></div><div class="content" data-v-b90976a4><div class="content-body" data-v-b90976a4><!--[--><!--]--><div class="vp-navbar-search search" data-v-b90976a4><div class="search-wrapper" data-v-62419745><!----><div id="local-search" data-v-62419745><button type="button" class="mini-search mini-search-button" aria-label="搜索文档" data-v-62419745><span class="mini-search-button-container"><span class="mini-search-search-icon vpi-mini-search" aria-label="search icon"></span><span class="mini-search-button-placeholder">搜索文档</span></span><span class="mini-search-button-keys"><kbd class="mini-search-button-key"></kbd><kbd class="mini-search-button-key">K</kbd></span></button></div></div></div><!--[--><!--]--><nav aria-labelledby="main-nav-aria-label" class="vp-navbar-menu menu" data-v-b90976a4 data-v-b42927e7><span id="main-nav-aria-label" class="visually-hidden" data-v-b42927e7>Main Navigation</span><!--[--><!--[--><a class="vp-link link navbar-menu-link" href="/guide/intro/" tabindex="0" data-v-b42927e7 data-v-29cf8989><!--[--><span class="vp-icon vpi-icon-park-outline-guide-board" style="" aria-hidden data-provider="iconify" data-v-29cf8989></span><span data-v-29cf8989>指南</span><!----><!--]--><!----></a><!--]--><!--[--><a class="vp-link link navbar-menu-link" href="/config/intro/" tabindex="0" data-v-b42927e7 data-v-29cf8989><!--[--><span class="vp-icon vpi-icon-park-outline-setting-two" style="" aria-hidden data-provider="iconify" data-v-29cf8989></span><span data-v-29cf8989>配置</span><!----><!--]--><!----></a><!--]--><!--[--><a class="vp-link link navbar-menu-link" href="/blog/" tabindex="0" data-v-b42927e7 data-v-29cf8989><!--[--><span class="vp-icon vpi-material-symbols-article-outline" style="" aria-hidden data-provider="iconify" data-v-29cf8989></span><span data-v-29cf8989>博客</span><!----><!--]--><!----></a><!--]--><!--[--><a class="vp-link link navbar-menu-link" href="/demos/" tabindex="0" data-v-b42927e7 data-v-29cf8989><!--[--><span class="vp-icon vpi-map-wind-surfing" style="" aria-hidden data-provider="iconify" data-v-29cf8989></span><span data-v-29cf8989>案例</span><!----><!--]--><!----></a><!--]--><!--[--><div class="vp-flyout vp-navbar-menu-group" data-v-b42927e7 data-v-15bfbb59><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-15bfbb59><span class="text" data-v-15bfbb59><span class="vp-icon vpi-icon-park-outline-more-three" style="" aria-hidden data-provider="iconify" data-v-15bfbb59></span><!----><span data-v-15bfbb59>更多</span><!----><span class="vpi-chevron-down text-icon" data-v-15bfbb59></span></span></button><div class="menu" data-v-15bfbb59><div class="vp-menu" data-v-15bfbb59 data-v-f3964f32><div class="items" data-v-f3964f32><!--[--><!--[--><div class="vp-menu-link" data-v-f3964f32 data-v-e06ddb34><a class="vp-link link" href="/faq/" data-v-e06ddb34><!--[--><span class="vp-icon vpi-wpf-faq" style="" aria-hidden data-provider="iconify" data-v-e06ddb34></span> 常见问题 <!----><!--]--><!----></a></div><!--]--><!--[--><div class="vp-menu-link" data-v-f3964f32 data-v-e06ddb34><a class="vp-link link" href="/sponsor/" data-v-e06ddb34><!--[--><span class="vp-icon vpi-line-md-coffee-loop" style="" aria-hidden data-provider="iconify" data-v-e06ddb34></span> 喝杯奶茶 <!----><!--]--><!----></a></div><!--]--><!--[--><div class="vp-menu-link" data-v-f3964f32 data-v-e06ddb34><a class="vp-link link" href="/tools/" data-v-e06ddb34><!--[--><span class="vp-icon vpi-jam-tools" style="" aria-hidden data-provider="iconify" data-v-e06ddb34></span> 主题工具 <!----><!--]--><!----></a></div><!--]--><!--[--><div class="vp-menu-link" data-v-f3964f32 data-v-e06ddb34><a class="vp-link link" href="/friends/" data-v-e06ddb34><!--[--><span class="vp-icon vpi-carbon-friendship" style="" aria-hidden data-provider="iconify" data-v-e06ddb34></span> 友情链接 <!----><!--]--><!----></a></div><!--]--><!--[--><div class="vp-menu-group" data-v-f3964f32 data-v-6c770283><p class="title" data-v-6c770283><span class="vp-icon vpi-logos-vue bg" style="" aria-hidden data-provider="iconify" data-v-6c770283></span><span data-v-6c770283>Vuepress</span></p><!--[--><!--[--><div class="vp-menu-link" data-v-6c770283 data-v-e06ddb34><a class="vp-link link vp-external-link-icon" href="https://v2.vuepress.vuejs.org" target="_blank" rel="noopener noreferrer" data-v-e06ddb34><!--[--><span class="vp-icon vpi-logos-vue bg" style="" aria-hidden data-provider="iconify" data-v-e06ddb34></span> 官方文档 <!----><!--]--><span class="visually-hidden">(在新窗口打开)</span></a></div><!--]--><!--[--><div class="vp-menu-link" data-v-6c770283 data-v-e06ddb34><a class="vp-link link vp-external-link-icon" href="https://ecosystem.vuejs.press/" target="_blank" rel="noopener noreferrer" data-v-e06ddb34><!--[--><span class="vp-icon vpi-logos-vue bg" style="" aria-hidden data-provider="iconify" data-v-e06ddb34></span> 生态系统 <!----><!--]--><span class="visually-hidden">(在新窗口打开)</span></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="vp-flyout vp-navbar-menu-group active" data-v-b42927e7 data-v-15bfbb59><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-15bfbb59><span class="text" data-v-15bfbb59><span class="vp-icon vpi-codicon-versions" style="" aria-hidden data-provider="iconify" data-v-15bfbb59></span><!----><span data-v-15bfbb59>1.0.0-rc.194</span><span class="vp-badge tip vp-menu-badge" style="" data-v-15bfbb59 data-v-52c8341f><!--[-->新<!--]--></span><span class="vpi-chevron-down text-icon" data-v-15bfbb59></span></span></button><div class="menu" data-v-15bfbb59><div class="vp-menu" data-v-15bfbb59 data-v-f3964f32><div class="items" data-v-f3964f32><!--[--><!--[--><div class="vp-menu-link" data-v-f3964f32 data-v-e06ddb34><a class="vp-link link" href="/changelog/" data-v-e06ddb34><!--[--><!----> 更新日志 <!----><!--]--><!----></a></div><!--]--><!--[--><div class="vp-menu-link" data-v-f3964f32 data-v-e06ddb34><a class="vp-link link active" href="/contributing/" data-v-e06ddb34><!--[--><!----> 参与贡献 <!----><!--]--><!----></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!--[--><!--]--><div class="vp-flyout vp-navbar-translations translations" data-v-b90976a4 data-v-e0a18246 data-v-15bfbb59><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="选择语言" data-v-15bfbb59><span class="text" data-v-15bfbb59><!----><span class="vpi-languages option-icon" data-v-15bfbb59></span><!----><!----><span class="vpi-chevron-down text-icon" data-v-15bfbb59></span></span></button><div class="menu" data-v-15bfbb59><div class="vp-menu" data-v-15bfbb59 data-v-f3964f32><!----><!--[--><!--[--><div class="items" data-v-e0a18246><p class="title" data-v-e0a18246>简体中文</p><!--[--><div class="vp-menu-link" data-v-e0a18246 data-v-e06ddb34><a class="vp-link link" href="/en/contributing/" data-v-e06ddb34><!--[--><!----> English <!----><!--]--><!----></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="vp-navbar-appearance appearance" data-v-b90976a4 data-v-17780d44><button class="vp-switch vp-switch-appearance" type="button" role="switch" aria-checked="false" title data-v-17780d44 data-v-cbe77d87 data-v-36bbbf22><span class="check" data-v-36bbbf22><span class="icon" data-v-36bbbf22><!--[--><span class="vpi-sun sun" data-v-cbe77d87></span><span class="vpi-moon moon" data-v-cbe77d87></span><!--]--></span></span></button></div><div class="vp-social-links vp-navbar-social-links social-links" data-v-b90976a4 data-v-ba70645a data-v-5dc0805d><!--[--><a class="vp-social-link no-icon" href="https://github.com/pengzhanbo/vuepress-theme-plume" aria-label="github" title="github" target="_blank" rel="noopener" data-v-5dc0805d data-v-c5bc2a09><span class="vp-icon vpi-simple-icons-github" style="" aria-hidden data-provider="iconify" data-v-c5bc2a09></span></a><a class="vp-social-link no-icon" href="https://qm.qq.com/q/FbPPoOIscE" aria-label="qq" title="qq" target="_blank" rel="noopener" data-v-5dc0805d data-v-c5bc2a09><span class="vp-icon vpi-simple-icons-qq" style="" aria-hidden data-provider="iconify" data-v-c5bc2a09></span></a><!--]--></div><div class="vp-flyout vp-navbar-extra extra" data-v-b90976a4 data-v-7e94ae84 data-v-15bfbb59><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-15bfbb59><span class="vpi-more-horizontal icon" data-v-15bfbb59></span></button><div class="menu" data-v-15bfbb59><div class="vp-menu" data-v-15bfbb59 data-v-f3964f32><!----><!--[--><!--[--><div class="group translations" data-v-7e94ae84><p class="trans-title" data-v-7e94ae84>简体中文</p><!--[--><div class="vp-menu-link" data-v-7e94ae84 data-v-e06ddb34><a class="vp-link link" href="/en/contributing/" data-v-e06ddb34><!--[--><!----> English <!----><!--]--><!----></a></div><!--]--></div><div class="group appearance" data-v-7e94ae84><div class="item appearance" data-v-7e94ae84><p class="label" data-v-7e94ae84>外观</p><div class="appearance-action" data-v-7e94ae84><button class="vp-switch vp-switch-appearance" type="button" role="switch" aria-checked="false" title data-v-7e94ae84 data-v-cbe77d87 data-v-36bbbf22><span class="check" data-v-36bbbf22><span class="icon" data-v-36bbbf22><!--[--><span class="vpi-sun sun" data-v-cbe77d87></span><span class="vpi-moon moon" data-v-cbe77d87></span><!--]--></span></span></button></div></div></div><div class="group social" data-v-7e94ae84><div class="item social-links" data-v-7e94ae84><div class="vp-social-links social-links-list" data-v-7e94ae84 data-v-5dc0805d><!--[--><a class="vp-social-link no-icon" href="https://github.com/pengzhanbo/vuepress-theme-plume" aria-label="github" title="github" target="_blank" rel="noopener" data-v-5dc0805d data-v-c5bc2a09><span class="vp-icon vpi-simple-icons-github" style="" aria-hidden data-provider="iconify" data-v-c5bc2a09></span></a><a class="vp-social-link no-icon" href="https://qm.qq.com/q/FbPPoOIscE" aria-label="qq" title="qq" target="_blank" rel="noopener" data-v-5dc0805d data-v-c5bc2a09><span class="vp-icon vpi-simple-icons-qq" style="" aria-hidden data-provider="iconify" data-v-c5bc2a09></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="vp-navbar-hamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="nav-screen" data-v-b90976a4 data-v-2122c19e><span class="container" data-v-2122c19e><span class="top" data-v-2122c19e></span><span class="middle" data-v-2122c19e></span><span class="bottom" data-v-2122c19e></span></span></button></div></div></div></div><div class="divider" data-v-b90976a4><div class="divider-line" data-v-b90976a4></div></div></div><!----></header><!----><!--[--><!----><!----><!--]--><!--[--><div id="VPContent" vp-content class="vp-content" data-v-a5aadcf6 data-v-d3283ff2><div class="vp-doc-container has-aside" data-v-d3283ff2 data-v-c2acd915><!--[--><!--]--><div class="container" data-v-c2acd915><div class="aside" vp-outline data-v-c2acd915><div class="aside-curtain" data-v-c2acd915></div><div class="aside-container" data-v-c2acd915><div class="aside-content" data-v-c2acd915><div class="vp-doc-aside" data-v-c2acd915 data-v-8e9ccc00><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="vp-doc-aside-outline" role="navigation" data-v-8e9ccc00 data-v-c71a8a7e><div class="content" data-v-c71a8a7e><div class="outline-marker" data-v-c71a8a7e></div><div id="doc-outline-aria-label" aria-level="2" class="outline-title" role="heading" data-v-c71a8a7e><span data-v-c71a8a7e>此页内容</span><span class="vpi-print icon" data-v-c71a8a7e></span></div><ul class="root" data-v-c71a8a7e data-v-875470cb><!--[--><!--]--></ul></div></nav><!--[--><!--[--><!--[--><!--[--><div class="aside-nav-wrapper" data-v-a5aadcf6 data-v-44a708ba><a class="vp-link link no-icon vp-external-link-icon link" href="https://github.com/pengzhanbo/vuepress-theme-plume" target="_blank" rel="noopener noreferrer" data-v-44a708ba><!--[--><span class="vp-icon vpi-tabler-star" style="" aria-hidden data-provider="iconify" data-v-44a708ba></span><span class="link-text" data-v-44a708ba>在 GitHub 上 Star</span><span class="vpi-arrow-right" data-v-44a708ba></span><!--]--><!----></a><a class="vp-link link no-icon vp-external-link-icon link" href="https://github.com/pengzhanbo/vuepress-theme-plume/issues/new/choose" target="_blank" rel="noopener noreferrer" data-v-44a708ba><!--[--><span class="vp-icon vpi-octicon-issue-opened-16" style="" aria-hidden data-provider="iconify" data-v-44a708ba></span><span class="link-text" data-v-44a708ba>遇到问题?</span><span class="vpi-arrow-right" data-v-44a708ba></span><!--]--><!----></a><a class="vp-link link link" href="/sponsor/" data-v-44a708ba><!--[--><span class="vp-icon vpi-ep-milk-tea" style="" aria-hidden data-provider="iconify" data-v-44a708ba></span><span class="link-text" data-v-44a708ba>喝杯奶茶</span><span class="vpi-arrow-right" data-v-44a708ba></span><!--]--><!----></a></div><!--]--><!--]--><!--]--><!--]--><div class="spacer" data-v-8e9ccc00></div><!--[--><!--]--></div></div></div></div><div class="content" data-v-c2acd915><div class="content-container" data-v-c2acd915><!--[--><!--]--><main class="main" data-v-c2acd915><!----><!--[--><!--]--><!--[--><div class="vp-doc-title" data-v-42fa9e7c><!--[--><!--]--><h1 class="page-title" data-v-42fa9e7c><!----> 贡献指南 <!----></h1><!--[--><!--[--><!--[--><!--[--><div class="vp-page-context-menu" data-v-a5aadcf6 data-v-7b50bfdd><div class="page-context-button" type="button" data-v-7b50bfdd><span class="page-context-copy" data-v-7b50bfdd><span class="vpi-copy" data-v-7b50bfdd></span><span class="text" data-v-7b50bfdd>复制页面</span></span><span class="page-context-toggle" data-v-7b50bfdd><span class="vpi-chevron-down" data-v-7b50bfdd></span></span></div><ul class="page-context-menu" style="display:none;" data-v-7b50bfdd><li data-v-7b50bfdd><a href="javascript:void(0)" data-v-7b50bfdd><span class="vpi-copy" data-v-7b50bfdd></span><span data-v-7b50bfdd>复制页面 <small data-v-7b50bfdd>将页面以 Markdown 格式复制供 LLMs 使用</small></span></a></li><!--[--><li data-v-7b50bfdd><a href="/contributing/index.md" target="_blank" rel="noopener noreferrer" aria-label="以 Markdown 格式查看" type="text/markdown" data-allow-mismatch data-v-7b50bfdd><span class="vpi-markdown" data-v-7b50bfdd></span><span data-v-7b50bfdd>以 Markdown 格式查看 <span class="vpi-external-link" data-v-7b50bfdd></span><small data-v-7b50bfdd>以纯文本查看此页面</small></span></a></li><li data-v-7b50bfdd><a href="https://chat.openai.com/?prompt=" target="_blank" rel="noopener noreferrer" aria-label="在 ChatGPT 中打开" data-allow-mismatch data-v-7b50bfdd><span class="vpi-chatgpt" data-v-7b50bfdd></span><span data-v-7b50bfdd>在 ChatGPT 中打开 <span class="vpi-external-link" data-v-7b50bfdd></span><small data-v-7b50bfdd>向 ChatGPT 提问有关此页面</small></span></a></li><li data-v-7b50bfdd><a href="https://claude.ai/new?q=" target="_blank" rel="noopener noreferrer" aria-label="在 Claude 中打开" data-allow-mismatch data-v-7b50bfdd><span class="vpi-claude" data-v-7b50bfdd></span><span data-v-7b50bfdd>在 Claude 中打开 <span class="vpi-external-link" data-v-7b50bfdd></span><small data-v-7b50bfdd>向 Claude 提问有关此页面</small></span></a></li><li data-v-7b50bfdd><a href="https://perplexity.ai/?q=" target="_blank" rel="noopener noreferrer" aria-label="在 Perplexity 中打开" data-allow-mismatch data-v-7b50bfdd><span class="vpi-perplexity" data-v-7b50bfdd></span><span data-v-7b50bfdd>在 Perplexity 中打开 <span class="vpi-external-link" data-v-7b50bfdd></span><small data-v-7b50bfdd>向 Perplexity 提问有关此页面</small></span></a></li><!--]--></ul></div><!--]--><!--]--><!--]--><!--]--></div><div class="vp-doc-meta" data-v-42fa9e7c><!--[--><!--]--><!----><!----><!--[--><!--]--><p class="create-time" data-v-42fa9e7c><span class="vpi-clock icon" data-v-42fa9e7c></span><span data-v-42fa9e7c>2024-03-13</span></p></div><!--]--><!--[--><!--]--><!--[--><div class="_contributing_ vp-doc plume-content" vp-content data-v-c2acd915><!--[--><!--]--><div data-v-c2acd915><h2 id="概览" tabindex="-1"><a class="header-anchor" href="#概览"><span>概览</span></a></h2><p>项目仓库借助于 <a href="https://pnpm.io/zh/workspaces" target="_blank" rel="noopener noreferrer">pnpm 工作空间</a> 来实现 <a href="https://en.wikipedia.org/wiki/Monorepo" target="_blank" rel="noopener noreferrer">Monorepo</a> ,存放了多个互相关联的独立 Package 。</p><ul><li>主题于 <code>theme</code> 目录中进行开发维护。</li><li>插件于 <code>plugins</code> 目录中进行开发维护。</li><li>文档于 <code>docs</code> 目录中进行开发维护。</li></ul><p>在 <code>plugins</code> 目录中:</p><ul><li><code>plugin-search</code>: 为主题提供 全文模糊搜索 功能</li><li><code>plugin-md-power</code>: 提供 markdown 增强功能</li><li><code>plugin-fonts</code>: 提供特殊字符字体支持</li></ul><h2 id="开发配置" tabindex="-1"><a class="header-anchor" href="#开发配置"><span>开发配置</span></a></h2><p>开发要求:</p><ul><li><a href="http://nodejs.org/" target="_blank" rel="noopener noreferrer">Node.js</a> version 20.19.0+</li><li><a href="https://pnpm.io/zh/" target="_blank" rel="noopener noreferrer">pnpm</a> version 9+</li></ul><p>克隆代码仓库,并安装依赖:</p><div class="language-sh" data-highlighter="shiki" data-ext="sh" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-sh"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">pnpm</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> install</span></span></code></pre></div><p>在首次启动开发服务前,先构建源代码:</p><div class="language-sh" data-highlighter="shiki" data-ext="sh" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-sh"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">pnpm</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> build</span></span></code></pre></div><h3 id="主要工具" tabindex="-1"><a class="header-anchor" href="#主要工具"><span>主要工具</span></a></h3><ul><li><a href="https://www.typescriptlang.org/" target="_blank" rel="noopener noreferrer">TypeScript</a> 作为开发语言</li><li><a href="https://eslint.org/" target="_blank" rel="noopener noreferrer">ESLint</a> 用于代码检查和格式化</li><li><a href="https://stylelint.io/" target="_blank" rel="noopener noreferrer">StyleLint</a> 用于代码检查和格式化</li></ul><h3 id="脚本" tabindex="-1"><a class="header-anchor" href="#脚本"><span>脚本</span></a></h3><h4 id="pnpm-build" tabindex="-1"><a class="header-anchor" href="#pnpm-build"><span><code>pnpm build</code></span></a></h4><p><code>build</code> 命令使用 <code>tsc</code> 将源代码编译成 <code>lib</code> 目录下的 <code>.js</code> 文件。 同时复制 不需要编译的资源到对应的<code>lib</code> 目录下。</p><p>你在克隆代码仓库后,需要先执行该命令来确保项目代码可以顺利运行,因为编译后的输出目录被 <code>.gitignore</code> 排除在仓库以外了。</p><h4 id="pnpm-dev" tabindex="-1"><a class="header-anchor" href="#pnpm-dev"><span><code>pnpm dev</code></span></a></h4><p><code>dev</code> 命令会在本地开启两个服务,一个是运行 主题 <code>theme</code> 目录的 <code>tsup:watch & copy:watch</code>, 一个是运行 示例 <code>docs</code> 目录的 <code>vuepress</code> 开发服务。</p><p><code>plugins</code> 目录下的所有插件,默认都没有 <code>dev</code> 命令,因此,你对 <code>plugins</code> 下的改动,可能需要执行 <code>pnpm build</code> 命令 进行重新构建,部分对 <code>plugins/**/node</code> 目录下的改动,需要重新执行 <code>pnpm dev</code> 才能生效。</p><h4 id="pnpm-lint" tabindex="-1"><a class="header-anchor" href="#pnpm-lint"><span><code>pnpm lint</code></span></a></h4><p><code>lint</code> 命令使用 ESLint 来检查所有源文件。</p><p>当 <code>lint</code> 给出了错误时,你可以手动修改源码以修复 eslint 的报错。 也可以执行 <code>pnpm lint:fix</code> 来自动修复。</p><h4 id="pnpm-test" tabindex="-1"><a class="header-anchor" href="#pnpm-test"><span><code>pnpm test</code></span></a></h4><p><code>test</code> 命令使用 Vitest 来运行所有测试。</p><h3 id="ide-支持" tabindex="-1"><a class="header-anchor" href="#ide-支持"><span>IDE 支持</span></a></h3><p>推荐使用 <code>vs code</code> 进行开发。本仓库配置了开发本主题时,推荐的 <code>vs code</code> 扩展, 当你导入本仓库时,<code>vs code</code> 可能会推荐你安装一些扩展。</p></div><!----><!----><!----><!----></div><!--]--></main><div id="comment" class="giscus-wrapper input-top vp-comment" vp-comment style="display:block;" data-v-c2acd915><div style="display: flex;align-items: center;justify-content: center;height: 96px"><span style="--loading-icon: url("data:image/svg+xml;charset=utf8,%3Csvg preserveAspectRatio=%22xMidYMid%22 viewBox=%2225 25 50 50%22%3E%3CanimateTransform attributeName=%22transform%22 type=%22rotate%22 dur=%222s%22 keyTimes=%220;1%22 repeatCount=%22indefinite%22 values=%220;360%22%3E%3C/animateTransform%3E%3Ccircle cx=%2250%22 cy=%2250%22 r=%2220%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%224%22 stroke-linecap=%22round%22%3E%3Canimate attributeName=%22stroke-dasharray%22 dur=%221.5s%22 keyTimes=%220;0.5;1%22 repeatCount=%22indefinite%22 values=%221,200;90,200;1,200%22%3E%3C/animate%3E%3Canimate attributeName=%22stroke-dashoffset%22 dur=%221.5s%22 keyTimes=%220;0.5;1%22 repeatCount=%22indefinite%22 values=%220;-35px;-125px%22%3E%3C/animate%3E%3C/circle%3E%3C/svg%3E");--icon-size: 48px;display: inline-block;width: var(--icon-size);height: var(--icon-size);background-color: currentcolor;-webkit-mask-image: var(--loading-icon);mask-image: var(--loading-icon)"></span></div></div><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!--]--><button type="button" class="vp-back-to-top" aria-label="back to top" data-v-a5aadcf6 style="display:none;" data-v-7a6b3799><span class="percent" data-allow-mismatch data-v-7a6b3799>0%</span><span class="show icon vpi-back-to-top" data-v-7a6b3799></span><svg aria-hidden="true" data-v-7a6b3799><circle cx="50%" cy="50%" data-allow-mismatch style="stroke-dasharray:calc(0% - 12.566370614359172px) calc(314.1592653589793% - 12.566370614359172px);" data-v-7a6b3799></circle></svg></button><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24" aria-label="sign down" class="vp-sign-down" aria-hidden="true" data-v-a5aadcf6 style="display:none;" data-v-43069080><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" data-v-43069080><path d="m19 11l-7 6l-7-6" data-v-43069080></path><path d="m19 5l-7 6l-7-6" opacity="0.6" data-v-43069080></path></g></svg><footer class="vp-footer" vp-footer data-v-a5aadcf6 data-v-b83cc7e0><!--[--><div class="container" data-v-b83cc7e0><div class="message" data-v-b83cc7e0>Powered by <a target="_blank" href="https://v2.vuepress.vuejs.org/">VuePress</a> & <a target="_blank" href="https://theme-plume.vuejs.press">vuepress-theme-plume</a></div><div class="copyright" data-v-b83cc7e0>Copyright © 2021-present pengzhanbo</div></div><!--]--></footer><!--[--><!--]--><!--]--></div><!----><!--]--><!--[--><!--]--><!--]--></div><script type="module" src="/assets/app-CponcA4I.js" defer></script></body></html> |