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.

Build faster with AI
New Masterclass to help you leverage AI in your Vue workflow.
Get Early Access