• 开源贡献指引
    • 提交问题
    • Pull Requests
      • 开始
      • 构建
      • 测试结构
        • Fixtures
        • Unit tests(单元测试)
      • 测试您的更改
      • 例子
      • Linting
      • 文档
      • 提交过程
        • 在macOS上调试测试

    开源贡献指引

    欢迎为 Nuxt.js 做出开源贡献!

    提交问题

    我们使用CMTY使贡献者和维护者更容易的提交问题和新功能改进。

    请确保包含一个克隆仓库或CodeSandBox,以便可以更好地再现错误,我们开始修复它的速度越快!

    Pull Requests

    欢迎大家提 PR( 源码拉取请求 ),即便是修复一个拼写错误。

    任何重大改进都应与现有功能请求或错误报告相关联。

    开始

    • Fork 代码仓库到您自己的GitHub帐户,然后 clone 到您的本地。
    • 运行 npm installyarn install 来安装依赖。

    请注意,npmyarn 都被认为丢失依赖项。要解决此问题,您可以删除示例应用程序中的node_modules文件夹,然后重新安装或执行缺少的依赖项的本地安装。

    如果要添加依赖项,请使用yarn addyarn.lock文件是所有Nuxt依赖项的最新源。

    构建

    在运行任何测试之前,请确保满足所有依赖项并构建所有依赖项:

    1. yarn
    2. yarn build

    测试结构

    一个伟大而出色的PR,无论是包含错误修复还是新功能,都会包含测试。

    要编写出色的测试,让我们解释一下我们的测试结构:

    Fixtures

    这个 fixtures (在 tests/fixtures 目录下) 包含几个Nuxt应用程序。为了使构建时间尽可能短,我们不会为每个测试构建一个自己的Nuxt应用程序。相反,在运行实际的单元测试之前,构造了(yarn test:fixtures)。

    提交PR时,请确保 更改添加新fixture 用来正确反映更改(如果适用)。此外,不要忘记在更改后通过使用jest test/fixtures/my-fixture/my-fixture.test.js运行相应的测试来重新构建fixtures。

    Unit tests(单元测试)

    单元测试可以在tests/unit中找到,并将在构建fixtures后执行。每次测试,将使用新的Nuxt服务器以便不存在共享状态(除了构建步骤的初始状态)。

    添加单元测试后,您可以直接运行它们:

    1. jest test/unit/test.js

    或者您可以运行整个单元测试:

    1. yarn test:unit

    请再次注意,您可能需要重新构建您的fixture!

    测试您的更改

    在处理PR时,您可能需要检查fixture是否设置正确或调试当前的更改。为此,您可以使用Nuxt脚本本身来启动例如您的fixture或示例应用:

    1. yarn nuxt examples/your-app
    2. yarn nuxt test/fixtures/your-fixture-app

    npm link也可以(并且在某种程度上)可以为此工作,但有时它会出现一些问题。这就是为什么我们建议直接调用yarn nuxt来运行示例。

    例子

    如果您正在开发更大的功能,请在 examples/ 中设置一个示例应用程序。这将有助于理解变更,并帮助Nuxt用户深入了解您提交构建的功能。

    Linting

    您可能已经注意到,我们正在使用 ESLint 来强制检查代码标准。请在提交之前运行yarn lint您的更改以检查代码样式是否标准。如果没有,你可以使用 yarn lint —fixnpm run lint — —fix (没有拼错!)来修复大部分的样式风格变化。如果仍有错误,则必须手动更正。

    文档

    如果您要添加新功能,请进行重构或以任何其他方式更改Nuxt的行为,您可能会这样做想要记录变化。 Please do so with a PR to the docs repository.请提交PR到 docs 代码仓库。您不必立即编写文档(但请在PR足够严谨及检查后提交)。

    提交过程

    提交PR时,您需要填写一个简单的模板。

    请勾选清单中的所有对应 "answers"。

    在macOS上调试测试

    搜索getPort()将显示它用于在测试期间启动新的Nuxt进程。使用macOS它有时会停止,并且可能需要您手动设置端口进行测试。

    另一个常见问题是Nuxt进程在运行fixture测试时可能会挂起内存。过程通常会阻止后续测试工作。运行ps aux | grep -i node如果您对发生这种情况不解,则检查任何挂起的测试过程。