基于 Dawn 进行多工程管理
一些项目或会借助额外的工具比如 Lerna,而基于 Dawn 的工程再引入 Lerna 又显得麻烦,且 Lerna 在使用 tnpm 时会有一些不便之处。
而 Solution 中间件是针对 Dawn 的单 Repo 多 Package 解决方案,通过 Solution 中间件可基于 Dawn 的基本命令在一个 Reop 中轻易管理多个 Packages,在此介绍一下 Solution 中间件的使用方法。
2.1. 启用 Solution 中间件
一个基于 Dawn 的工程都会有一个 pipe.yml,声明了工作流中各阶段需要做的事情,每件事情能常是由某个中间件提供能力,Solution 也是作为一个中间件存在,为 Dawn 带来多 Packages 的管理能力。
dev:
2.2. 在 Solution 中添加 Package
在 Solution 工程的根目录新建一个名称 packages 的目录(默认为 packages 但可指定为其他目录),然后,执行如下命令
dn add
根据提示选择 ‘Create a new package’,可快速在 Solution 中创建一个 Package。当然也可手动在 packages 目录中创建新的 Package
2.3. 配置 packages
在 .dawn 目录中新建一个 solution.yml 配置文件,在文件中添加如下配置
unified: true
root: ./packages
packages:
在声明完成后,执行如下命令即可自动完成所有 Packages 间的依赖配置
dn run link
2.4. 安装外部依赖
为所有或指定的 Pakcages 安装依赖时,也是使用 dn add 命令,如下
dn add
根据提示选择 Install a remote package 即可为全部或指定的 Packages 安装依赖的远程 npm package。
2.5. 发布 Packages
如需发布能力,那么 solution 中的每个 package 都应该在 pipe 中配置 publish,当 unified 为 true 时,在执行 dn publish 时,会为每个 package 生成统一的版本,并全部发布。而当 unified 为 false 时,将仅依次执行每个 package 自已的 publish pipeline。
通常 Package 的 publish 配置如下:
publish:
dn publish
2.6. 其他常规操作
通常情况下,在 Solution 中和单工程的 Dawn 命令是一样,参考如下这些示例命令
dn test
dn build
dn test
2.7 执行任意命令
有时我们想在所有或指定的几个 Packages 中执行一些命令,和单工程中执行自定义 pipe 类似,命令如下:
dn run
执行如上命仅,将会让开发人员选择目示 Pakcages,并提示输入命令(任意的 shell 命令),输入后回车却可在指定的 Pakcage 中执行相关命令。
最后给大家推荐我现在自己用的服务器:三丰云 https://www.sanfengyun.com