贡献
Nuxt UI因其令人难以置信的社区支持而蓬勃发展。我们欢迎通过bug报告,pull requests和反馈来帮助使这个库变得更好。️
AI辅助
我们通过AGENTS.md为AI助手提供贡献指南,帮助您为Nuxt UI贡献内容。它会被所有AI编码代理自动拾取,并通过组件结构、主题模式、测试约定和文档指南进行指导。
Project structure
以下是Nuxt UI项目结构中关键目录和文件的概述:
Documentation
该文档位于docs文件夹中,作为Nuxt应用程序使用@nuxt/content从Markdown文件生成页面。有关其工作原理的详细信息,请参阅Nuxt内容文档。以下是其结构的详细信息:
├── app/
│ ├── assets/
│ ├── components/
│ │ └── content/
│ │ └── examples # Components used in documentation as examples
│ ├── composables/
│ └── ...
├── content/
│ ├── blog/
│ ├── docs/
│ │ ├── 1.getting-started
│ │ ├── 2.components # Components documentation
│ │ ├── 3.composables
│ │ └── 4.typography
│ └── ... # Landing pages (index.yml, showcase.yml...)
Module
模块代码位于src文件夹中。下面是其结构的分解:
├── plugins/
├── runtime/
│ ├── components/ # Where all the components are located
│ │ ├── Accordion.vue
│ │ ├── Alert.vue
│ │ └── ...
│ ├── composables/
│ ├── locale/
│ ├── plugins/
│ ├── types/
│ ├── utils/
│ └── vue/
│ ├── components/
│ └── plugins/
├── theme/ # This where the theme for each component is located
│ ├── accordion.ts # Theme for Accordion component
│ ├── alert.ts
│ └── ...
├── utils/
└── module.ts
CLI
为了使开发更容易,我们创建了一个CLI,您可以使用它来生成组件和区域设置。您可以使用pnpm cli make命令访问它。
Components
可以使用以下命令创建新组件:
pnpm cli make component <name> [options]
可用选项:
--primitive创建基本元件--prose创建散文组件--content创建内容组件--template仅生成特定模板(可用模板:playground、docs、test、theme、component)
范例:
# Create a basic component
pnpm cli make component my-component
# Create a prose component
pnpm cli make component heading --prose
# Create a content component
pnpm cli make component block --content
# Generate only documentation template
pnpm cli make component my-component --template=docs
Locales
您可以使用以下命令创建新的区域设置:
pnpm cli make locale --code <code>
区域设置名称和方向从CLDR开始填充,并根据该名称验证代码。您可以使用--name和--dir标志覆盖它们。
翻译完消息后,您可以通过运行以下命令来检查您的语言环境是否与其他语言环境(消息键、占位符、名称和方向)保持一致:
pnpm test locale --run
Submit a Pull Request(PR)
在开始之前,请检查是否存在描述您正在处理的问题或功能请求的现有问题。如果存在,请对该问题发表评论,让我们知道您正在处理该问题。
如果没有,打开一个新的问题来讨论问题或功能。
Local development
要开始本地开发,请执行以下步骤:
将nuxt/ui存储库克隆到本地计算机
git clone -b v4 https://github.com/nuxt/ui.git
EnableCorepack
corepack enable
Install dependencies
pnpm install
Generate type stubs
pnpm run dev:prepare
Start development
- 要处理位于
docs文件夹中的documentation,请运行:
pnpm run docs
- 要使用playground测试Nuxt组件,请运行:
pnpm run dev
- 要使用playground测试Vue组件,请运行:
pnpm run dev:vue
IDE设置
我们建议将VSCode与ESLint扩展名一起使用。您可以在保存代码时启用自动修复和格式化。具体操作如下:
{
"editor.codeActionsOnSave": {
"source.fixAll": "never",
"source.fixAll.eslint": "explicit"
},
"prettier.enable": false
}
Linting
您可以使用lint命令来检查是否存在linting错误:
pnpm run lint # check for linting errors
pnpm run lint:fix # fix linting errors
Type checking
我们使用TypeScript进行类型检查。您可以使用typecheck命令来检查类型错误:
pnpm run typecheck
Testing
在提交PR之前,请确保运行以下测试:
pnpm run test
u。Commit约定
我们使用Conventional Committs作为提交消息,它允许基于提交自动生成更改日志。如果您还不熟悉,请阅读guide到。
- 将
fix和feat用于影响功能或逻辑的代码更改 docs用于文档更改,chore用于维护任务
Making a Pull Request
- 按照创建请购单时提供的[提示沿着操作](https://github.com/nuxt/ui/blob/v4/.github/PULL_REQUEST_TEMPLATE.md?plain=1
- 请确保您的PR标题符合[Conventional Committs](https://www.conventionalcommits.org/,因为一旦代码合并,将使用该标题。
- Multiple commit也没问题;不需要rebase或者强制推送。我们在合并时会使用
Squash and Merge。 - 请确保
lint、typecheck和tests在提交PR之前工作。避免进行不相关的更改。
我们会立即检查它。如果分配给维护人员,他们会仔细检查它。忽略红色文本;它是用于跟踪目的。
谢谢
再次感谢你对这个项目感兴趣!你太棒了!️