是的,我们是一个包在一个仓库,我们使用了 lerna + yarn 来管理这些包,实现关联和统一发布、管理。
- scripts => 一些脚本
- packages => 所有的包都在这下面
- 某个具体的 NPM 包
- src 源代码
- dist 编译后的代码
- test 功能测试
- 某个具体的 NPM 包
- yarn => 安装所有依赖项目
- yarn run build => 编译
- yarn run lint => 执行对 test、src 目录的 lint
- yarn run test => 执行测试
- yarn run cov => 覆盖率
- yarn run gen-api-ref => 生成 API-Reference
- yarn run bootstrap => lerna bootstrap
- yarn run test => 对所有 packages 执行单元测试
- yarn run cov => 对所有 packages 执行覆盖率测试
- yarn run build => 对所有 packages 执行 build
- yarn run publish => 发布到 npm
- yarn run clean => lerna clean
- yarn run purge => 清除所有依赖
- yarn run gen-api-ref => 生成全部 API-Reference
- yarn run ci => 执行 CI
- checkout 新分支 features/xxx
- 开发功能
- 向提交 develop merge (通过 MR 或 PR)
- 合并至 develop
- yarn run test
- 亦可通过 IDE 执行 Mocha
- 工具
- 测试框架:Mocha
- 断言工具:chai 的 expect 形式
- Mock工具:mm
- 覆盖率工具:istanbul
- 要求
- 测试覆盖率:Statement 90% 以上,Branch 80% 以上
提高软件的鲁棒性、安全性,需要对软件进行一些静态的分析与约束
-
类型系统
- 引入 TypeScript
- 类型系统可以提供一些类似 Interface 的约束,或类型推断分析的能力,对于发现软件问题较为有用
-
三方包检查
- 使用 nsp
- 在集成中执行 nsp
- 工具
- 使用 TSLint 检查代码风格
- 执行方式
- 构建之前
const debug = require('debug')('pinus:pakageName:ClassName');
- 直接require一个debug包
- 埋点名称由三部分组成
pinus
- 包名称
- 类名或组件名
- 工具
- typedoc 生成 API-Reference