Files
layui/CONTRIBUTING.md
sunxiaobin89 5ab142153b ci: 添加 lint 和 format 工具,统一代码格式 (#2905)
* style: 统一代码格式,修复ESLint错误

- 为所有模块添加尾随逗号
- 修复缺少分号的语句
- 统一对象字面量格式
- 添加ESLint配置文件和文档
- 更新package.json中的脚本和依赖项

* build: 添加 ESLint 配置文件以支持 IE9+ 兼容性

* refactor(upload): 使用已缓存的hint实例替换直接调用

优化代码性能,避免重复实例化hint对象,直接使用模块顶部已缓存的实例

* chore: 更新.gitignore文件以包含更多忽略规则

添加了更多常见的临时文件、编辑器文件、构建输出目录和运行时数据的忽略规则,使项目更加整洁并避免不必要的文件被提交到版本控制中

* fix(lay.js): 修复passive事件监听器选项的返回值

确保getter函数返回true以正确支持passive事件监听

* refactor(form): 移除表单模块中的冗余代码

删除表单模块中无实际作用的冗余代码行,这些代码只是将属性重新赋值为自身,没有实际功能意义

* fix(form): 修复复选框状态处理逻辑

确保复选框的 indeterminate 和 checked 状态被正确转换为布尔值,并优化事件调用时的空格格式

* feat(eslint): 完善 ESLint 配置并添加 VSCode 支持

添加 VSCode 配置文件以支持 ESLint 自动修复和格式化
更新 ESLint 配置,增强代码风格和兼容性规则
修复 package.json 中的脚本拼写错误并添加 format 脚本
调整 .gitignore 以允许特定 VSCode 配置文件

* style: 统一代码中的引号格式并修复缩进问题

统一将双引号改为单引号,修复部分代码缩进不一致的问题,提升代码风格一致性

* docs: 删除过时的ESLint配置文档文件

* build: 采用 prettier 作为代码格式化工具,剔除 ESLint 格式化部分

* chore: 剔除 .vscode/ 配置,保持编辑器中立

* build: 修改 ESLint 为「扁平化配置」方式,避免大量参数堆砌

* chore: 格式化代码

* ci: 添加 git hooks 和 CI 环节把关代码风格

* ci: update

* ci: update

* test: 测试 ci format

* ci: 改用 husky 作为 git hooks,与 Layui 3 保持一致

经测试,simple-git-hooks 生成的 pre-commit 默认为 sh,在 Windows 不兼容(必须用 git bash 执行 commits)

* build: 新增 CI 和生产环境跳过 husky 安装的判断

* build: 剔除重复配置

* build: 优化 eslint 配置

---------

Co-authored-by: 贤心 <3277200+sentsim@users.noreply.github.com>
2025-11-10 16:03:37 +08:00

5.3 KiB
Raw Permalink Blame History

🍀 Layui 贡献指南

为了提升沟通效率,请花几分钟时间仔细阅读本文档。遵循这些指南有助于表达您尊重管理和开发这个开源项目的贡献者。作为回报,他们也会以同样的尊重来处理或评估您的 Issue 和 Pull Request。

Issue

创建 Issue 之前

Layui 的 issue 只受理 「Bug 报告」和「功能请求」。如果是关于如何使用、功能疑惑或其他业务相关的问题建议在 Discussions 寻找社区帮助。若 issue 不符合规定或违背社区行为准则,它将会被立即关闭。

在正式创建 Issue 之前,您应当确保已完成以下前置工作

  • 仔细查看 Layui 官方文档和每个版本的更新日志:https://layui.dev
  • 在 Issues 中搜索相似问题,找到解决方案,但应避免在旧的 Issue 中留言。
  • 通过其他技术社区搜索相关资料、或充分利用当前主流的人工智能大模型

为什么要有严格的 issue 规定

维护开源项目是一项艰辛的工作,它崇高而又略显卑微。加上 Layui 的使用门槛相对较低随着受众的广为推崇我们每天疲于应对各种技术反馈包括bug 报告,功能需求和 Pull Requests。

作为一个免费使用的开源项目Layui 的维护人手是有限的。这意味着想要让项目可持续发展,我们必须:

  1. 给予更具体的工作、更高的优先级(如 bug 修复和新功能的开发);
  2. 提高 issue 处理的效率。

针对 (1),我们决定将 GitHub issue 严格地限制在有具体目标和内容的工作。问题和讨论应当发送到更适合它们的场合。比如关于「如何使用」,建议发到 Layui 讨论区,或者把它细化成更具体的 Bug 和 Feature Request。这两者的区别是「如何使用」是一个未经思考和调研的问句而 Bug 和 Feature Request 需要提问者进一步明确这是一个缺陷或者未支持的特性。

针对 (2),我们发现影响 issue 处理效率最大两点因素是a) 用户开 issue 之前并没有做好前置工作,这导致大量重复且初级的 issue 不断出现b) 用户开 issue 时没有提供足够有效的信息,这导致我们需要花费大量的时间去跟用户来回沟通,只为了获得一些基本信息好让我们对 issue 进行真正的分析。因此,为了减少不必要的资源消耗,严格要求 Issue 规定是迫切和必要的。尤其对于 Layui 核心维护者,应当让他们的主要精力投入到项目更重要的工作中去。

最重要的是请明白一件事开源项目的用户和维护者之间并不是甲方和乙方的关系issue 也不是客服。在开 issue 的时候,请抱着「一起合作来解决这个问题」的心态,避免期待社区单方面地为你服务。

以上借鉴了 Ant Design 社区的成熟经验,并做了适用于 Layui 社区的相关修改。

正式创建 issue

当您已对上述事项充分阅读并理解,在正式创建过程中,您应当遵循 Issue 提供表单规范仔细填写,尽可能将您所遇到的 Bug 或 Feature Request 描述详细。

创建 issue 之后

  • 在 issue 交流过程中,若议题已经得到解决,请主动关闭 issue。
  • 大家本着相互尊重、理解和友善的态度,共同维护 Layui 来之不易的良好的社区氛围,谢谢 💖

其他参考资料

  1. 贡献者行为准则
  2. 提问的智慧 @tvvocold
  3. 为什么需要最小重现 @antfu

Pull Request

Layui 采用灵活的分支管理策略,我们鼓励您直接在对应的分支上提 Pull Request。为了使得 Reivew 和 Merge 的工作流程更加流畅,请仔细阅读以下说明:

分支说明

  • main 作为主干分支,代表的是项目当前稳定的最新版本,接受 feature 和 hotfix 。
  • *.x 作为历史稳定版本分支,如 2.x 即代表 2.x 系列稳定版本,只接受 hotfix不接受 feature 。
  • *-dev 作为未来大版本开发分支,如 3.0-dev 即代表 3.0 的开发版本,接受 feature 和 hotfix但不保证稳定性。

Commits 规范

Layui 遵循 Conventional Commits 规范,您的 git commit 和 PR title 都应遵循这一规范。

操作步骤

  1. 创建 PR 前,请按照上述分支规则说明,拉取项目最新代码后,基于对应的分支进行开发。
  2. 在项目根目录下运行 npm install 安装依赖。
  3. 完成开发后,运行 npm run checks,确保您的代码通过了 test, lint 等工具测试。2.x 分支不支持)
  4. 创建 PR 时,请在 title 项按照 Commits 规范填写。并请在 description 项严格遵循给出的「内容模板」规范填写,以提供必要的信息,如本次 PR 的具体变更说明、可供预览的在线演示地址等。
  5. 提交 PR 后,确保已通过 Github CI 检查,若失败,可查看具体原因进行调整。
  6. 确保以上所有步骤都符合要求后,即可等待项目成员对您的代码进行 Review 及合并评估。

其他参考资料