npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

tcm

v1.0.15

Published

Team component manager

Downloads

13

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