tcm

tcm

Team component manager

Showing:

Readme

Team Component Manager

依赖

NodeJS >= 6.0.0

通过 NPM

$ npm i -g tcm

通过 YARN

$ yarn global add tcm

客户端

概述

当安装TCM组件时, 会在编译组件时要求填充组件预先定义好的参数, 组件的安装流程中可以获取填充的参数,根据参数装配编译组件。

创建新的组件

当创建新的组件时, 执行

$ tcm init

该命令会引导用户创建一个新的组件,在这个引导流程中, 你需要完善:

  • 名称
  • 版本
  • 作者
  • 描述
  • 关键字
  • 安装选项
    • 选项名称
    • 选项类型
    • 选项默认值

同时,还会生成一个 build.js 文件,完成此文件中的方法以实现组件接收参数后的安装流程,其中:

  • 在方法中能通过参数获取到 shell, dist, args 三个参数,分别是 shelljs编译目标位置编译参数(安装时填写)
  • build 过程中要把所有需要安装的文件编译到 dist 所指向的目标位置中
  • 方法最后返回一个 Promise

添加参数

在组件开发过程中,你可以通过命令方便添加组件选项

$ tcm add-options

此命令会引导用户添加组件安装选项,引导完成后,新的选项会写入 component.json

添加示例

组件可以添加示例,以在组件的页面上展示,通过以下命令

$ tcm add-example

此命令会引导用户设置示例的所在目录及添加示例的入口文件,引导完成后, 新的选项会写入 component.json

版本管理

在组件开发过程中,可以使用以下命令方便的变更组件版本

$ tcm version <major,minor,patch>

由于组件使用 语义化版本,您可使用命令变更组件版本各个部分。

查找组件

如果想在远程 registry 中搜索组件,执行

$ tcm search <keyword> [--registry <registry url>]

此命令会在指定的 registry 中搜索组件,并展示结果列表。

添加依赖到组件

当在组件中添加已有的组件依赖时, 执行

$ tcm install <component> --save [--registry <registry url>]

此命令会安装依赖组件,并会根据依赖组件定义的选项进行询问填充参数。 依赖关系和填充的参数将会保存在组件 component.jsondependencies 节点中。

命令中可以指定组件所在的远程仓库,同时也可以直接安装本已存在的组件,示例如下:

安装远程组件

$ tcm install <componentName>@<componentVersionRange> --save [--registry <registry url>]

安装本地组件

$ tcm install <componentPath> --save

直接通过 component.json 安装

如果要通过已定义好的依赖关系安装组件,执行

$ tcm install

安装流程和添加依赖到组件的流程类似, 需要注意的是:

  • 当被安装组件所依赖的组件参数在依赖关系(dependencies 节点)中已声明时, 安装器将会自动填充依赖关系中保存的参数到组件安装流程中。
  • 当被安装组件所依赖的组件安装参数未被填充时,安装器将会自动填充组件选项的默认值为参数到组件安装流程中。 

检查安装结果

如果要查看已安装的组件,执行

$ tcm ls

此命令会罗列出所有已安装的组件,并会检查已安装组件的依赖关系是否安装。

组件删除

如果要删除已安装的组件, 执行

$ tcm uninstall <componentNames> [--save]

此命令将会删除已安装的指定组件,若有 save 参数则同时将 component.json 中的依赖关系移除。

组件打包

如果要打包自己的组件以备发布,执行

$ tcm pack

此命令会将遵循黑名单 .tcmignore 对当前组件目录进行完整打包到 component.tar.gz 文件。

以下文件已默认包含在黑名单中,请避免使用:

  • .git GIT目录
  • .tcmignore TCM黑名单列表
  • dist TCM默认编译结果目录
  • components TCM组件依赖安装目录
  • component.tar.gz TCM组件打包文件
  • example.tar.gz TCM组件示例打包文件
  • component.json TCM组件元文件

打包前脚本

组件打包前会运行 component.jsonprepack 节点中指定的脚本。

组件发布

如果要将组件发布到 registry, 执行

$ tcm publish [--registry <registry url>]

此命令将会将本地组件发布到远程。

注:tcm publish 命令将会先行执行 tcm pack 命令,但是无文件产出。

缓存管理

您可以使用以下命令查看 TCM 的缓存目录

$ tcm cache

也可以通过以下命令清除 TCM 所有缓存

$ tcm cache --clean

组件 component.json 中可以定义 buildCache 节点,这是一个缓存白名单,在组件重复 build(多次安装)的过程中,如果白名单中的目录或者文件在 prepare 目录中已存在,则不会进行清除,build 过程可以重复使用这些缓存下来的文件。(例如第三方的库就不用重复下载和编译了)

服务端

概述

这是 TCM 的组件 registry 服务端,负责集中管理组件,可以使用开放的 API 对 registry 中的组件进行检索、下载,也可以接收组件的打包发布。未来还将支持组件的基本 WIKI 和 DEMO 页面的展示。

启动服务

若要启动服务,执行

$ tcm-server start <registry-path> [--host <host> --port <port> --db <mongodb-url>] [--debug]

存储位置

其中 registry-path 是所有组件和服务数据库要存放的位置,hostport 则为服务监听的地址和端口。

数据库

服务端默认使用 TingoDB 作为数据库, TingoDB 是一个 本地嵌入型 NoSql数据库, 与 MongoDB API 相同。 同时,也可以通过 --db 参数传入 MongoDB 的URL地址,来启用 MongoDB

$ tcm-server start ./registry --db mongodb://localhost:27017/tcm

注:由于 TingoDB 不支持多进程操作,所以当使用 TingoDB 时服务器将会以单进程模式启动

启动模式

增加 --debug 为启动单进程模式,并会打印 Log 到终端。 生产环境下建议使用 MongoDB, 服务将会以多进程运行,启动一个守护进程和多个工作进程,工作进程数量为 CPU 的内核数量。 生产环境可以使用 supervisor forever 等来进行服务启动,以提高服务的可用性。

开发

测试安装TCM

$ cd <tcm>
$ npm ln

接下来便可以直接使用 tcm。 更多帮助使用 tcm --help 查看。

开发模式

$ cd <tcm>
$ npm run dev