跳到内容

贡献

感谢您有兴趣为本项目做贡献!

警告⚠️ 减缓新函数开发

随着 VueUse 用户群的持续增长,我们收到了大量的特性请求和 pull requests。 因此,维护项目变得越来越具有挑战性,并使我们的能力达到了极限。 因此,在不久的将来,我们可能需要减缓接受新特性的速度,并优先考虑现有函数的稳定性和质量。 请注意,目前可能不接受 VueUse 的新特性。 如果您有任何新想法,我们建议您首先将它们纳入您自己的代码库,迭代它们以满足您的需求,并评估它们的通用性。 如果您坚信您的想法对社区有益,您可以提交一个 pull request 以及您的用例,我们将很乐意审查和讨论它们。 感谢您的理解。

开发

设置

克隆此仓库到您的本地机器并安装依赖项。

bash
pnpm install

我们使用 VitePress 进行快速开发和文档编写。您可以通过以下方式在本地启动它

bash
pnpm dev

测试

bash
pnpm test:unit # to run unit tests

如果您想使用实验性浏览器测试,您需要首先安装 playwright 依赖项。

bash
nlx playwright install --with-deps

然后运行

bash
pnpm test:browser

贡献

现有函数

欢迎随时增强现有函数。请尽量不要引入破坏性更改。

新函数

以下是一些添加新函数的注意事项

  • 在您开始工作之前,最好先开一个 issue 进行讨论。
  • 实现应放置在 packages/core 下的文件夹中,并在 index.ts 中公开
  • core 包中,尽量不要引入第三方依赖项,因为此包旨在尽可能轻量。
  • 如果您想引入第三方依赖项,请贡献到 @vueuse/integrations 或创建一个新的附加组件。
  • 您可以在 packages/core/_template/ 下找到函数模板,详细信息在 函数文件夹 部分中进行了解释。
  • 在为您的函数编写文档时,<!--FOOTER_STARTS--><!--FOOTER_ENDS--> 将在构建时自动更新,因此无需更新它们。

请注意,您无需更新 packages 的 index.ts。它们是自动生成的。

新附加组件

非常欢迎新的附加组件!

  • packages/ 下创建一个新文件夹,将其命名为您的附加组件名称。
  • scripts/packages.ts 中添加附加组件详细信息
  • 在该文件夹下创建 README.md
  • 像对核心包一样添加函数。
  • 提交并作为 PR 提交。

项目结构

Monorepo

我们使用 monorepo 进行多包管理

packages
  shared/         - shared utils across packages
  core/           - the core package
  firebase/       - the Firebase add-on
  [...addons]/    - add-ons named

函数文件夹

一个函数文件夹通常包含这 4 个文件

您可以在 packages/core/_template/ 下找到模板

bash
index.ts            # function source code itself
demo.vue            # documentation demo
index.test.ts       # vitest unit testing
index.md            # documentation

对于 index.ts,您应该导出带有名称的函数。

ts
// DO
export { useMyFunction }

// DON'T
export default useMyFunction

对于 index.md,第一句话将显示为函数列表中的简短介绍,因此请尽量保持简洁明了。

markdown
# useMyFunction

This will be the intro. The detail descriptions...

阅读更多关于准则的信息。

代码风格

只要您安装了开发依赖项,就不用担心代码风格。Git hooks 将在提交时为您格式化和修复它们。

感谢

再次感谢您对本项目感兴趣!你太棒了!

在 MIT 许可证下发布。