贡献
对本项目做出贡献
贡献
感谢您对本项目做出贡献的兴趣!
警告:⚠️ 减缓新功能开发
随着 VueUse 用户群体的不断增长,我们收到了大量的功能请求和拉取请求。因此,维护项目变得越来越具有挑战性,并且我们的能力已经达到了极限。因此,在不久的将来,我们可能需要减缓接受新功能的步伐,并优先考虑现有功能的稳定性和质量。请注意,目前可能不接受 VueUse 的新功能。 如果您有任何新的想法,我们建议您首先将其整合到自己的代码库中,进行迭代以适应您的需求,并评估其通用性。如果您坚信您的想法对社区有益,您可以提交拉取请求并附上您的用例,我们很乐意进行审查和讨论。感谢您的理解。
随着 VueUse 用户群体的不断增长,我们收到了大量的功能请求和拉取请求。因此,维护项目变得越来越具有挑战性,并且我们的能力已经达到了极限。因此,在不久的将来,我们可能需要减缓接受新功能的步伐,并优先考虑现有功能的稳定性和质量。请注意,目前可能不接受 VueUse 的新功能。 如果您有任何新的想法,我们建议您首先将其整合到自己的代码库中,进行迭代以适应您的需求,并评估其通用性。如果您坚信您的想法对社区有益,您可以提交拉取请求并附上您的用例,我们很乐意进行审查和讨论。感谢您的理解。
开发
设置
将此仓库克隆到本地机器并安装依赖项。
pnpm install
我们使用 VitePress 进行快速开发和文档编写。您可以通过以下命令在本地启动它:
pnpm dev
测试
pnpm test:unit # 运行单元测试
如果您想使用实验性浏览器测试,您需要先安装 Playwright 依赖项。
npx playwright install --with-deps
然后运行:
pnpm test:browser
贡献
现有功能
欢迎随时增强现有功能。请尽量不要引入破坏性更改。
新功能
添加新功能有一些注意事项:
- 在开始工作之前,最好先开一个 issue 进行讨论。
- 实现应该放在
packages/core下的文件夹中,并在index.ts中暴露。 - 在
core包中,尽量不要引入第三方依赖项,因为此包的目标是尽可能轻量。 - 如果您想引入第三方依赖项,请贡献到 @vueuse/integrations 或创建一个新的附加组件。
- 您可以在
packages/core/_template/下找到函数模板,详细信息在 函数文件夹 部分解释。 - 在为您的函数编写文档时,
<!--FOOTER_STARTS-->和<!--FOOTER_ENDS-->将在构建时自动更新,因此无需手动更新。
请注意,您无需更新包的
index.ts 文件。它们是自动生成的。新添加的插件
非常欢迎新的额外组件!
- 在
packages/下创建一个新文件夹,将其命名为您的附加组件名称。 - 在
scripts/packages.ts中添加附加组件详细信息。 - 在该文件夹下创建
README.md。 - 像对核心包一样添加功能。
- 提交并作为 PR。
项目结构
Monorepo
我们使用 Monorepo 来管理多个包:
packages
shared/ - 跨包共享的工具函数
core/ - 核心包
firebase/ - Firebase 附加组件
[...addons]/ - 命名的附加组件
函数文件夹
一个函数文件夹通常包含这 4 个文件:
您可以在 packages/core/_template/ 下找到模板。
index.ts # 函数源代码本身
demo.vue # 文档演示
index.test.ts # vitest 单元测试
index.md # 文档
对于 index.ts,您应该以命名方式导出函数。
// 正确
export { useMyFunction }
// 错误
export default useMyFunction
对于 index.md,第一句话将作为函数列表中的简短介绍显示,因此请尽量保持简洁明了。
# useMyFunction
这将是简介。详细描述...
阅读更多关于 指南 的信息。
代码风格
只要您安装了开发依赖项,就不用担心代码风格。Git hooks 会在提交时为您格式化和修复代码。
感谢
再次感谢您对本项目感兴趣!您真棒!