---
title: "框架"
description: "关于向框架仓库贡献的一些具体要点。"
canonical_url: "https://nuxt.zhcndoc.com/docs/4.x/community/framework-contribution"
---
# 框架

> 关于向框架仓库贡献的一些具体要点。

阅读完[通用贡献指南](https://nuxt.zhcndoc.com/docs/4.x/community/contribution)后，以下是一些关于向 [`nuxt/nuxt`](https://github.com/nuxt/nuxt) 仓库贡献代码的具体要点。

## Monorepo 指南

- `packages/kit`：用于编写 Nuxt 模块的工具包，发布为 [`@nuxt/kit`](https://www.npmjs.com/package/@nuxt/kit)。
- `packages/nuxt`：Nuxt 的核心，发布为 [`nuxt`](https://www.npmjs.com/package/nuxt)。
- `packages/schema`：跨版本的 Nuxt 类型定义和默认值，发布为 [`@nuxt/schema`](https://www.npmjs.com/package/@nuxt/schema)。
- `packages/rspack`：Nuxt 的 [Rspack](https://rspack.rs) 打包器，发布为 [`@nuxt/rspack-builder`](https://www.npmjs.com/package/@nuxt/rspack-builder)。
- `packages/vite`：Nuxt 的 [Vite](https://vite.dev) 打包器，发布为 [`@nuxt/vite-builder`](https://www.npmjs.com/package/@nuxt/vite-builder)。
- `packages/webpack`：Nuxt 的 [webpack](https://webpack.js.org) 打包器，发布为 [`@nuxt/webpack-builder`](https://www.npmjs.com/package/@nuxt/webpack-builder)。

## 设置

要向 Nuxt 贡献代码，您需要搭建本地环境。

1. 将 [`nuxt/nuxt`](https://github.com/nuxt/nuxt) 仓库 [派生](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) 到您的 GitHub 账户，然后将其[克隆](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository)到本地设备。
2. 确保使用最新版本的 [Node.js](https://nodejs.org/en)
3. 启用 [Corepack](https://github.com/nodejs/corepack) 以使用 `pnpm` 和 `yarn`
   ```bash [Terminal]
   corepack enable
   ```
4. 运行 `pnpm install --frozen-lockfile`，通过 pnpm 安装依赖：
   ```bash [Terminal]
   pnpm install --frozen-lockfile
   ```
   ::note
   如果您要添加依赖，请使用 `pnpm add`。   

   `pnpm-lock.yaml` 文件是所有 Nuxt 依赖的事实依据。
   ::
5. 激活被动开发系统
   ```bash [Terminal]
   pnpm dev:prepare
   ```
6. 检出一个可以用于开展工作和提交更改的分支：
   ```bash [Terminal]
   git checkout -b my-new-branch
   ```

然后，在提交拉取请求之前，请在[演练场](https://nuxt.zhcndoc.com/docs/4.x/community/framework-contribution#playground)中测试您的更改，并对更改进行[测试](https://nuxt.zhcndoc.com/docs/4.x/community/framework-contribution#testing)。

### 演练场

处理拉取请求时，您很可能想检查更改是否正常工作。

您可以修改 `playground/` 中的示例应用，并运行：

```bash [Terminal]
pnpm dev
```

::important
请确保不要将其提交到您的分支，但在 PR 描述中添加一些示例代码可能会非常有帮助。这样可以帮助审阅者和其他 Nuxt 用户更深入地理解您实现的功能。
::

### 测试

每个新功能都应当有相应的单元测试（如有可能）。本仓库中的 `test/` 目录目前仍在开发中，但请尽最大努力根据已有示例创建新的测试。

在创建 PR 或将其标记为可审阅之前，运行以下命令以确保所有测试通过：

```bash [Terminal]
pnpm test
```

### 代码检查

您可能已经注意到，我们使用 ESLint 来强制执行代码规范。

在提交更改之前，为了验证代码风格是否正确，请运行：

```bash [Terminal]
pnpm lint
```

::note
您可以使用 `pnpm lint --fix` 修复大多数样式问题。   

如果仍有残留错误，您必须手动修正它们。
::

### 文档

如果您正在添加新功能、重构或以其他方式更改 Nuxt 的行为，您很可能需要记录这些更改。请在同一个 PR 中包含对文档的任何更改。您不必在第一次提交时就编写完文档（但请在您的拉取请求足够成熟时尽快补上）。

::important
请确保按照[文档风格指南](https://nuxt.zhcndoc.com/docs/4.x/community/contribution#documentation-style-guide)进行修改。
::

### 最终检查清单

提交 PR 时，有一个需要填写的简单模板。请勾选清单中所有适用的“答案”。

## 文档指南

如果您发现可以改进文档或错误提示的地方，请务必打开一个 PR——即便只是修正一个拼写错误！

::important
请确保按照[文档风格指南](https://nuxt.zhcndoc.com/docs/4.x/community/contribution#documentation-style-guide)进行修改。
::

### 快速编辑

如果您发现拼写错误或想重写某个句子，可以点击位于右侧边栏 **Community** 部分的 **编辑此页面** 链接。

直接在 GitHub 界面中进行修改并打开一个 Pull Request。

### 较长的编辑

文档内容位于 [nuxt/nuxt](https://github.com/nuxt/nuxt) 仓库的 `docs/` 目录中，并以 Markdown 编写。

::note
要在本地预览文档，请按照 [nuxt/nuxt.com](https://github.com/nuxt/nuxt.com) 仓库中的步骤进行操作。
::

::note
我们建议您为 VS Code 安装 [MDC 扩展](https://marketplace.visualstudio.com/items?itemName=Nuxt.mdc)。
::

### 文档代码检查

文档使用 [MarkdownLint](https://github.com/DavidAnson/markdownlint) 和 [case police](https://github.com/antfu/case-police) 进行代码检查，以保持文档风格一致。

```bash [Terminal]
pnpm lint:docs
```

::note
您也可以运行 `pnpm lint:docs:fix` 来突出并解决任何代码检查问题。
::

### 打开一个 PR

请确保您的 PR 标题符合[规范提交](https://www.conventionalcommits.org)指南。

```bash [示例 PR 标题]
docs: update the section about the nuxt.config.ts file
```


## Sitemap

See the full [sitemap](https://nuxt.zhcndoc.com/sitemap.md) for all pages.
