tm
tm(Typescript Manager)是使用go语言实现的一个自动化构建工具,支持对npm环境的编译、构建、打包、发布等操作,通过yaml配置,支持多模块的构建和依赖关联打包。
使用
下载安装
工具下载页面: Typescript Manager
执行:
mv tm /usr/local/bin
chmod +x /usr/local/bin/tm
使用方法
在任意目录执行tm,会提示使用方法,如下:
用法
tm [exec]
提示
exec build
示例
tm build 构建
tm 帮助
tm help 帮助
tm -h 帮助
tm ? 帮助
tm version 版本
tm -v 版本
tm --v 版本
作者
zouliming@netwisd.com
gitlab-ci.yml示例:
stages:
- pull
- build
pull:
only:
- master
stage: pull
before_script:
- cd $CI_PROJECT_DIR
script:
- git pull origin master
build-deploy:
only:
- master
stage: build
script:
- tm build
default:
before_script:
- . /etc/profile
- . ~/.bashrc
- cd $CI_PROJECT_DIR
- chmod +x ./* -R
完整配置
tm的配置文件名称为cicd.yaml,此名称为固定名称,不可修改,配置文件的内容如下:
# *********************
# 构建模块的配置,此配置用于配置所有构建服务配置
# zouliming@netwisd.com
# 2023.8.1
# *********************
logger:
path: "/root/tm/platform/log" # 日志文件路径。默认为空,表示关闭,仅输出到终端
file: "{Y-m-d}.log" # 日志文件格式。默认为"{Y-m-d}.log"
prefix: "" # 日志内容输出前缀。默认为空
level: "info" # 日志输出级别
ctxKeys: [ ] # 自定义Context上下文变量名称,自动打印Context的变量到日志中。默认为空
header: true # 是否打印日志的头信息。默认true
stdout: true # 日志是否同时输出到终端。默认true
rotateSize: 0 # 按照日志文件大小对文件进行滚动切分。默认为0,表示关闭滚动切分特性
rotateExpire: 0 # 按照日志文件时间间隔对文件滚动切分。默认为0,表示关闭滚动切分特性
rotateBackupLimit: 0 # 按照切分的文件数量清理切分文件,当滚动切分特性开启时有效。默认为0,表示不备份,切分则删除
rotateBackupExpire: 0 # 按照切分的文件有效期清理切分文件,当滚动切分特性开启时有效。默认为0,表示不备份,切分则删除
rotateBackupCompress: 0 # 滚动切分文件的压缩比(0-9)。默认为0,表示不压缩
rotateCheckInterval: "1h" # 滚动切分的时间检测间隔,一般不需要设置。默认为1小时
stdoutColorDisabled: false # 关闭终端的颜色打印。默认开启
writerColorEnable: false # 日志文件是否带上颜色。默认false,表示不带颜色
# 构建模块的配置
module:
use: multi
single:
multi:
all: #所有模块都依赖的内容,提前此配置下的内容后,会构建所有模块
- packages/lib/base
default:
packages/site/base: # 需要构建的模块
- packages/api/base # 构建模块的依赖项,即:如果提交相应依赖项,即构建相应父级模块
- packages/lib/mdm
- packages/api/mdm
packages/site/mdm:
- packages/lib/mdm
- packages/api/mdm
packages/site/wf:
- packages/lib/wf
- packages/api/wf
packages/site/portal:
- packages/lib/portal
- packages/api/portal
packages/site/procdef:
- packages/lib/procdef
packages/site/client:
- packages/lib/client
push:
nexus:
# 发布前是否先清除之前的,清除之前指的是相应模块的之前对应版本的SNAPSHOT版本,不是所有模块的所有版本
cleanPrevious: true
#依赖包配置,这些配置列表如果发生提交后,会构建到nexus仓库中
dependency:
- packages/lib/base
- packages/lib/mdm
- packages/lib/portal
- packages/lib/wf
- packages/api/base
- packages/api/mdm
- packages/api/portal
- packages/api/wf
repository:
#Nexus配置
nexus:
repo: npm.netwisd.snapshot
host: http://192.168.0.110:8081
username: admin
password: Netwisd*8
deploy:
path: /nfs/$ns/nginx/html/ # ns为命名空间的变量值,为tm程序保留字段,以变量形式写,构建时会根据配置的namespaces动态替换这个变量
namespaces:
default:
- incloud5
customized: #自定义的情况比较少,就写成key:[模块名] value:[命名空间]数组形式
packages/site/client:
- incloud5
参数说明
service.use
single、multi,支持这两种值,single为单模块模式,multi为多模块多目录模式。
multi模式下,一般平台开发多模块时使用。
single模式一般情况下是指单模块时使用,主要是基于packages/site/client,客户端开发时使用。
module.multi.default.name
multi.default.xxx,xxx为模块名,模块即是目录名。
module.multi.default.name.dependency
multi.default.packages/site/base.packages/api/base,packages/api/base为依赖的模块名, > **这里的依赖不是指npm层面的依赖,是指构建层面的依赖,当前示例中指的是:packages/site/base依赖于packages/api/base模块的构建**, > 也就是说当packages/api/base被构建时,packages/site/base也会被构建
module.multi.default.all
指的是当这个配置下面的任意一个模块发生构建时,就会构建所有module.multi.default.name下面的模块。
项目上简化配置
因为在项目上使用时,没有像源码推送到nexus或那么多依赖构建需求,所以一般配置相对简单,示例如下:
# *********************
# 构建模块的配置,此配置用于配置所有构建服务配置
# zouliming@netwisd.com
# 2023.8.1
# *********************
logger:
path: "/root/tm/huabei/log" # 日志文件路径。默认为空,表示关闭,仅输出到终端
file: "{Y-m-d}.log" # 日志文件格式。默认为"{Y-m-d}.log"
prefix: "" # 日志内容输出前缀。默认为空
level: "info" # 日志输出级别
ctxKeys: [] # 自定义Context上下文变量名称,自动打印Context的变量到日志中。默认为空
header: true # 是否打印日志的头信息。默认true
stdout: true # 日志是否同时输出到终端。默认true
rotateSize: 0 # 按照日志文件大小对文件进行滚动切分。默认为0,表示关闭滚动切分特性
rotateExpire: 0 # 按照日志文件时间间隔对文件滚动切分。默认为0,表示关闭滚动切分特性
rotateBackupLimit: 0 # 按照切分的文件数量清理切分文件,当滚动切分特性开启时有效。默认为0,表示不备份,切分则删除
rotateBackupExpire: 0 # 按照切分的文件有效期清理切分文件,当滚动切分特性开启时有效。默认为0,表示不备份,切分则删除
rotateBackupCompress: 0 # 滚动切分文件的压缩比(0-9)。默认为0,表示不压缩
rotateCheckInterval: "1h" # 滚动切分的时间检测间隔,一般不需要设置。默认为1小时
stdoutColorDisabled: false # 关闭终端的颜色打印。默认开启
writerColorEnable: false # 日志文件是否带上颜色。默认false,表示不带颜色
# 构建模块的配置
module:
use: single
single: client
deploy:
path: /nfs/$ns/nginx/html/ # ns为命名空间的变量值,为tm程序保留字段,以变量形式写,构建时会根据配置的namespaces动态替换这个变量
namespaces:
default:
- incloud5-huabei
Last modified: 20 一月 2025