incloud开发文档 5.1.0 Help

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