import{P as e,f as t,h as n}from"./runtime-core.esm-bundler-CZvn3YaB.js";import{t as r}from"./plugin-vue_export-helper-CxTVcLa7.js";var i=JSON.parse(`{"path":"/en/contributing/","title":"Contributing","lang":"en-US","frontmatter":{"title":"Contributing","createTime":"2024/03/13 21:27:45","permalink":"/en/contributing/","article":false,"externalLinkIcon":false,"readingTime":false,"editLink":false,"contributors":false,"changelog":false,"search":false,"description":"Overview The project repository uses pnpm workspaces to implement a Monorepo, which stores multiple interrelated independent Packages. The theme is developed and maintained in t...","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Contributing\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2026-04-02T13:14:51.000Z\\",\\"author\\":[]}"],["meta",{"property":"og:url","content":"https://theme-plume.vuejs.press/en/contributing/"}],["meta",{"property":"og:site_name","content":"Plume Theme"}],["meta",{"property":"og:title","content":"Contributing"}],["meta",{"property":"og:description","content":"Overview The project repository uses pnpm workspaces to implement a Monorepo, which stores multiple interrelated independent Packages. The theme is developed and maintained in t..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["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":"zh-cn","href":"https://theme-plume.vuejs.press/contributing/"}]]},"readingTime":{"minutes":0.09,"words":27},"git":{"createdTime":1710362649000,"updatedTime":1775135691000},"autoDesc":true,"filePathRelative":"en/contributing.md","headers":[],"bulletin":false}`),a={name:`contributing.md`};function o(r,i,a,o,s,c){return e(),t(`div`,null,[...i[0]||=[n(`
The project repository uses pnpm workspaces to implement a Monorepo, which stores multiple interrelated independent Packages.
theme directory.plugins directory.docs directory.In the plugins directory:
plugin-search: Provides full-text fuzzy search functionality for the theme.plugin-md-power: Provides enhanced markdown features.plugin-fonts: Provides special character font supportDevelopment requirements:
Clone the repository and install dependencies:
pnpm installBefore starting the development service for the first time, build the source code:
pnpm buildpnpm buildThe build command uses tsc to compile the source code into .js files in the lib directory. It also copies resources that do not need to be compiled to the corresponding lib directory.
After cloning the repository, you need to run this command first to ensure that the project code can run smoothly, as the compiled output directory is excluded from the repository by .gitignore.
pnpm devThe dev command starts two services locally. One runs the tsup:watch & copy:watch for the theme directory, and the other runs the vuepress development service for the example docs directory.
By default, all plugins under the plugins directory do not have a dev command. Therefore, changes to the plugins directory may require running the pnpm build command to rebuild. Some changes to the plugins/**/node directory require re-running pnpm dev to take effect.
pnpm lintThe lint command uses ESLint to check all source files.
When lint reports errors, you can manually modify the source code to fix the ESLint errors, or run pnpm lint:fix to automatically fix them.
pnpm testThe test command uses Vitest to run all tests.
It is recommended to use vs code for development. This repository is configured with the recommended vs code extensions for developing this theme. When you import this repository, vs code may recommend that you install some extensions.