本脚手架包括三大内容:

  • 通用的npm 模块 packages
  • 项目示例 sample
  • klg-init 模板

# 开发 packages

为了方便用户升级,脚手架提供的特性大部分都会通过 @kalengo/xxx 这样的 npm 模块实现,用户只要模块版本就可以享受新功能。

因为是多模块开发,所以使用 lerna 这个库来帮忙管理和发布模块。

模块都存放在 packages 目录中,lerna 可以有效地帮你处理好模块之间的引入关系。

# 单元测试(TODO)

每个 packages 需要编写单元测试,保证稳定性,执行方法:

npm run test

# 集成测试

所有示例项目都存放在 sample 目录中,我们的每次修改都要保证示例的测试能够通过。

首先,把修改后的 packages build 到 sample 中

npm run build

然后执行集成测试, 这个命令会进入每一个 sample 并执行 npm run test:e2e

bash run-tests

# 发布 packages

以上测试都通过后,就可以执行发布

npm run publish

选择本次发布对应的版本,lerna 会帮你搞定发布流程。

# 验证 packages

为了验证 packages 是否可用,我们可以执行以下命令测试

先执行 bash upgrade-packages.sh 更新 sample 下的 @Kalengo 相关的包

再执行 bash run-tests 进行验证测试

# 发布脚手架模板

我们使用 klg-init 来生成脚手架,该脚手架需要一个模板。

模板存放位置 template/

默认将 hello-world sample 转为模板,把 hello-world 项目更新到最新,使用最新的 npm 包之后。

gulp move:template

测试模板

cd template
npm run test

该命令做了以下事情:

  • 将模板初始化为项目
  • npm install
  • npm test

注意:测试需要连接 mongodb, 修改 template/config/test.js 里的DB配置即可

测试通过就可以发布模板,执行 template/package.json 里的命令

npm run publish

项目模板将会以 npm 模块的形式发布出去, 模块名是 klg-nest-starter ,klg-init 会自动检测到最新模板。

注意:cnpm 同步 npm 仓库会有时延,你可以选择手动同步, 直接访问 https://npm.taobao.org/sync/klg-nest-starter 触发同步

# 更新文档

本项目的文档使用 vuepress , Vue 驱动的静态网站生成器。 使用 Markdown 编写,排版也非常简单,一键发布到 Github Pages。

执行一下命令,会打开本地文档预览,还会自动刷新。

npm run docs:dev

文档编写完成后,执行项目根目录的发布脚本

bash deploy_doc.sh

文档就更新到 Github Pages 了。