Skip to content

贡献

感谢您对该项目的兴趣!

警告: ⚠️ 减缓新功能的添加

随着 VueUse 的受众不断增长,我们收到了大量的功能请求和拉取请求。因此,维护项目变得越来越具有挑战性,并且已经将我们的能力极限。因此,在不久的将来,我们可能需要减缓新功能的接受速度,并优先考虑现有功能的稳定性和质量。请注意,此时可能不接受 VueUse 的新功能。 如果您有任何新想法,我们建议您首先将它们合并到自己的代码库中,根据自己的需要进行迭代,并评估它们的通用性。如果您坚信您的想法对社区有益,可以提交拉取请求以及您的用例,我们将乐意进行审查和讨论。感谢您的理解。

开发

设置

将此存储库克隆到本地计算机并安装依赖项。

bash
pnpm install

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

bash
pnpm dev

贡献

现有功能

请随意改进现有功能。请尽量不要引入破坏性的更改。

新功能

添加新功能时有一些注意事项

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

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

新附加组件

新的附加组件非常受欢迎!

  • packages/ 下创建一个新的文件夹,以您的附加组件名称命名。
  • scripts/packages.ts 中添加附加组件的详细信息。
  • 在该文件夹下创建 README.md
  • 添加功能,就像您为核心包所做的那样。
  • 提交并以 PR 形式提交。

项目结构

Monorepo

我们使用单一存储库管理多个包

packages
  shared/         - 跨包共享的工具函数
  core/           - 核心包
  firebase/       - Firebase 附加组件
  [...附加组件]/  - 附加组件命名

功能文件夹

一个功能文件夹通常包含以下 4 个文件:

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

bash
index.ts            # 功能源代码本身
demo.vue            # 文档演示
index.test.ts       # vitest 单元测试
index.md            # 文档

对于 index.ts,您应该使用名称导出函数。

ts
// 正确
export { useMyFunction }

// 错误
export default useMyFunction

对于 index.md,第一句将显示为功能列表中的简短介绍,因此请保持简洁和清晰。

markdown
# useMyFunction

这将是介绍。详细描述……

阅读更多有关指南的信息。

代码风格

只要安装了开发依赖项,就不必担心代码风格问题。提交时 Git 钩子会自动为您格式化和修复它们。

感谢

再次感谢您对该项目的兴趣!您真棒!

Released under the MIT License.