本仓库依赖 pnpm 提供的 mono-repo 管理方案 (pnpm workspace)。因此你需要安装 pnpm。
然后克隆本仓库
git clone git@github.com:alibaba/f2e-spec.git
cd f2e-spec
pnpm i
仓库的主要目录如下:
.
├── docs 规约文档
│ ├── coding 编码规约目录
│ └── engineering 工程规约目录
├── packages 配套工具
│ ├── commitlint-config-ali commitlint 配置包
│ ├── eslint-config-ali ESLint 配置包
│ ├── eslint-plugin-ali ESLint plugin,目前未在 ESLint 配置包中默认引入
│ ├── f2elint 一键工具
│ ├── markdownlint-config-ali markdownlint 配置包
│ └── stylelint-config-ali stylelint 配置包
├── CHANGELOG.md
├── CONTRIBUTING.md
└── README.md
docs/
目录还未开放。packages/
目录,其中有 6 个 npm 包的源码,分别是 f2elint
、4 个 xx-config-ali
以及 eslint-plugin-ali
。
4 个 xx-config-ali
是不同规约对应的 Linter 的规则配置包,它们和规约文档及 Lint 工具对应关系如下:
规约 | Lint 工具 | 规则包 |
---|---|---|
《JavaScript 编码规约》 《TypeScript 编码规约》 《React 编码规约》 《Rax 编码规约》 《Node.js 开发规约》 |
ESLint | eslint-config-ali |
《CSS 编码规约》 | stylelint | stylelint-config-ali |
《Git 规约》 | commitlint | commitlint-config-ali |
《文档通用规约》 | markdownlint | markdownlint-config-ali |
f2elint 是封装了 4 个 xx-config-ali 及相关依赖的一键工具。
你可以到相应的 xx-config-ali
目录修改和查看具体规则,或者到 f2elint
目录查看和修改 f2elint 的代码。
欢迎提交 PR,通过后会由仓库 Maintainers 发布 npm 版本。
PR 的标题和 git commit message header 请遵循以下约定:
<type>[optional scope]: <subject>
type 用来描述本次改动的类型,可选值及对应含义如下:
- feat: 新增功能
- fix: 修复 bug
- docs: 文档相关的改动
- style: 对代码的格式化改动,代码逻辑并未产生任何变化(例如代码缩进,分号的移除和添加)
- test: 新增或修改测试用例
- refactor: 重构代码或其他优化举措
- chore: 项目工程方面的改动,代码逻辑并未产生任何变化
- revert: 恢复之前的提交
scope 用来描述本次提交所涉及到的改动范围(例如模块、功能或其他任何限定的范围),subject 用来概括和描述本次提交的改动内容。
以下示例都是符合规范的:
fix(f2elint): 修复 xxx 问题
feat(eslint-config-ali): 新增 xxx 规则
docs(stylelint-config-ali): 优化 README
本仓库中的多个 npm 包独立发布,拥有各自独立的版本和 Changelog。版本号遵循 semver。
当 lint 规则变化导致之前不会报 error 的代码出现 error,那么则视为一次 Breaking Change,应该增加版本号的 X 位(14.0.0 -> 15.0.0)。比如下面的例子:
- 'no-console': 'warn',
+ 'no-console': 'error',
如果 lint 规则变化不会让现有代码报出新的 error,则只需要增加版本 Y 位。比如下面的例子:
- 'no-console': 'error',
+ 'no-console': 'off',
假如你要发布 eslint-config-ali:
cd packages/eslint-config-ali
pnpm publish
如果你发布了一个大版本(比如 14.0.0 -> 15.0.0),那么需要检查依赖它的包,比如 f2elint,并发布新版本(同时更新 Changelog)。