基于 Dawn 进行多工程管理

简介: 基于 Dawn 进行多工程管理 # 1. 简述 当一个项目中子工程较多时,就会面临「单仓库(Monorepo)」还是「多仓库(Multirepo)」管理的问题。当然两个方式各有优缺点,而我们选择多工程单 Repo 时,能够带来一些管理上的简便,比如「Issues 和 PR 的集中管理、整体一致的 Changelog 等」。而进一步「模块间的依赖管理、版本管理、发布管理」等问题,如果

基于 Dawn 进行多工程管理

1. 简述

当一个项目中子工程较多时,就会面临「单仓库(Monorepo)」还是「多仓库(Multirepo)」管理的问题。当然两个方式各有优缺点,而我们选择多工程单 Repo 时,能够带来一些管理上的简便,比如「Issues 和 PR 的集中管理、整体一致的 Changelog 等」。而进一步「模块间的依赖管理、版本管理、发布管理」等问题,如果能有在工具层的支持,那「 多工程单 Repo 」将进一步方便开发者。

一些项目或会借助额外的工具比如 Lerna,而基于 Dawn 的工程再引入 Lerna 又显得麻烦,且 Lerna 在使用 tnpm 时会有一些不便之处。

而 Solution 中间件是针对 Dawn 的单 Repo 多 Package 解决方案,通过 Solution 中间件可基于 Dawn 的基本命令在一个 Reop 中轻易管理多个 Packages,在此介绍一下 Solution 中间件的使用方法。

2. 使用

2.1. 启用 Solution 中间件

一个基于 Dawn 的工程都会有一个 pipe.yml,声明了工作流中各阶段需要做的事情,每件事情能常是由某个中间件提供能力,Solution 也是作为一个中间件存在,为 Dawn 带来多 Packages 的管理能力。

dev:
  - name: solution
build:
  - name: solution
test:
  - name: solution
add:
  - name: solution
link:
  - name: solution
publish:
  - name: solution

通过如上的配置,将 Solution 工程也就是顶层 Package 的所有 Pipeline 都交由 Solution 中间件负责。

2.2. 在 Solution 中添加 Package

在 Solution 工程的根目录新建一个名称 packages 的目录(默认为 packages 但可指定为其他目录),然后,执行如下命令

dn add

根据提示选择 'Create a new package',可快速在 Solution 中创建一个 Package。当然也可手动在 packages 目录中创建新的 Package

2.3. 配置 packages

在 .dawn 目录中新建一个 solution.yml 配置文件,在文件中添加如下配置

# 是否为统一模式(可省略,默认为 true)
unified: true

# packages 的根目录 (可省略,默认为 ./packages)
root: ./packages

# 声明所有 packages
packages:
  - name: your_package1
  - name: your_package2
  - name: your_package3
    deps:
      - your_package1
      - your_package2

如上示例,通过 packages 可声明 Solution 中有哪些 package,声明的顺序即「测试、构建、发布」等的顺序。

在声明完成后,执行如下命令即可自动完成所有 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:
  - name: call
    pipe:
      - test
      - build
  - name: publish

然后,在 Solution 根目录,即可通过如下命令完成发布

dn publish

2.6. 其他常规操作

通常情况下,在 Solution 中和单工程的 Dawn 命令是一样,参考如下这些示例命令

# 执行测试
dn test

# 执行构建
dn build

# 启动本地开发
dn test

2.7 执行任意命令

有时我们想在所有或指定的几个 Packages 中执行一些命令,和单工程中执行自定义 pipe 类似,命令如下:

dn run 

执行如上命仅,将会让开发人员选择目示 Pakcages,并提示输入命令(任意的 shell 命令),输入后回车却可在指定的 Pakcage 中执行相关命令。

3. 相关链接

目录
相关文章
|
2月前
|
人工智能 监控 安全
智慧工地uniapp项目管理系统源码
智慧工地是指应用物联网、大数据、云计算、人工智能等新兴技术,对建筑工地进行数字化、信息化、智能化改造的一种新型工地管理模式
34 0
|
8月前
|
监控 安全 物联网
智慧工地云平台源码 项目工程管理
通过运用物联网、大数据、云计算、BIM 、5G等技术,搭建由劳务管理、质量安全数据预警、施工现场视频实时监控、重大危险源和绿色文明施工监控等板块构成的模块化、一站式的信息化管理平台。平台可实现施工现场数据采集、数据综合统计及分析、手机App 应用等,现场数据分层次呈现给施工现场项目部、建筑企业、政府主管部门及监督机构等,以进行决策参考。
|
8月前
|
项目管理
《游戏测试》质量管理
《游戏测试》质量管理
|
10月前
|
敏捷开发 数据可视化 安全
敏捷工具-需求管理工具推荐
最专业的敏捷需求管理工具推荐
|
10月前
|
敏捷开发 项目管理
5款项目管理软件
1、国内敏捷研发项目管理软件Leangoo领歌.[www.leangoo.com](www.leangoo.com) 2、国外通用项目管理软件Asana.[a
|
监控 数据可视化 JavaScript
盘点:2022年10款比较火的项目管理软件
每一款都是好用且实惠的项目管理软件,都能进行项目项目进度管理、工时管理、人力资源管理、成本管理、立项审批管理、里程碑管理、任务分解管理、项目进度监控的,适合上市公司审计业务、会计师事务所用的,能解决如建筑设计行业、广告行业、传媒行业、园林工程行业、互联网技术行业、生物医药行业用的软件。
|
监控 安全 数据可视化
阿里云工程项目管理平台 实现工地智慧化管理
工程项目管理平台 工程项目管理平台将信息技术与行业应用场景的深度融合,提高工地现场的生产效率、管理效率和决策能力,实现工地智慧化管理。点击进入了解详情及购买 平台整体架构 工程项目管理平台,在建筑施工项目现场搭建基于物联网的软硬件系统集成一体化整体应用,实现劳务实名制管理、人员定位、质量安全巡检、塔吊监控、高支模监控、深基坑监控、大体积混凝土监控、扬尘噪声监控等一系列业务系统,数据实时接入管理平台形成可视化管理应用,有效降低运营成本,节省人力投入、减少安全隐患、规范施工管理、有效缓解施工项目现场进度、质量、安全、环境、人员等方面的管理难题。
4004 0
|
项目管理 监控 数据库
|
JavaScript 调度 数据挖掘