# tcb-toolkit-cli **Repository Path**: janpoem/tcb-toolkit-cli ## Basic Information - **Project Name**: tcb-toolkit-cli - **Description**: 腾讯云 cloudbase(tcb)工具箱脚本指令 - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-03-03 - **Last Updated**: 2023-03-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tcb-toolkit-cli [![gitee-repo](https://img.shields.io/static/v1?label=Gitee&message=https://gitee.com/janpoem/tcb-toolkit-cli&color=555555&logo=gitee&style=for-the-badge&labelColor=C71D23)](https://gitee.com/janpoem/tcb-toolkit-cli) [![version](https://img.shields.io/npm/v/tcb-toolkit-cli?style=for-the-badge)](https://www.npmjs.com/package/tcb-toolkit-cli) [![dw](https://img.shields.io/npm/dt/tcb-toolkit-cli?style=for-the-badge)](https://www.npmjs.com/package/tcb-toolkit-cli) 腾讯云 cloudbase(tcb)工具箱命令行指令集。 主要用于快速创建 tcb 项目,创建云函数子项目,自动同步云函数配置等。 目前已经比较完善,通过指定 `envId` 和 `region` 创建项目,开箱即用,可直接进入开发,并迅速发布上线。 为何要额外再做一个项目? [tcb-toolkit](https://www.npmjs.com/package/tcb-toolkit) 旨在为实际运行时的云函数提供必要的、有限的辅助和帮助( [minified 仅 3kb](https://bundlephobia.com/package/tcb-toolkit@1.0.4) ,仅依赖 `@cloudbase/node-sdk` ),尽可能控制本体容量,并充分利用 Typescript 的类型宣言、泛型、类型推断,来活化、规范化云函数的开发。 [tcb-toolkit-cli](https://www.npmjs.com/package/tcb-toolkit-cli) 包含大量工具、辅助的库,这些仅作为项目开发时候需要,并不是云函数运行时必要。 ## `tcb-toolkit-cli tcb` 新建 tcb 项目 ```shell npx tcb-toolkit-cli tcb -e envId -r region ``` 参数说明: - `-p|--package-manager` 包管理器,默认 `pnpm` - `-i|--install` 是否立刻安装依赖包,默认 `true` - `-d|--dir` 指定工作目录,如果为绝对路径,则以绝对路径为工作目录,如果为相对路径,则在当前路径下的目录,默认为 `undeinfed` - `-e|--envId` 指定 TCB envId,默认为 `undefined`,建议添加 - `-r|--region` 指定 TCB 分区,默认为 `undefined`,建议添加,可取值 `gz|bj|sh|nj|cd|cq`,亦可使用全称 `ap-guangzhou` or `guangzhou` 项目的 Typescript 转译环境,基于 `@swc/cli` ,配置文件优先级 `.swcrc > tsconfig.json`。 项目内执行 `pnpm dev` 启动即可开始工作(启动 `@swc/cli` 监听 functions 目录下文件修改)。 ### 依赖库说明 新创建的项目,默认整合如下依赖包(`devDependencies`): - `@types/node` - `typescript`, `ts-node` - `@swc/cli`, `@swc/core` - `eslint`, `@typescript-eslint/parser`, `@typescript-eslint/eslint-plugin` - `prettier` - `mocha`, `chai` 默认未启用 helper 模式(`tslib` or `@swc/helpers`),如需使用,请自行在项目中安装使用。 ### `cloudbaserc.json` 说明 新建 tcb 项目时,会默认创建一个 `cloudbaserc.json` 作为占位,请勿直接手动修改此文件,该文件仅用于最终发布。 有效的 cloudbase 配置分布在以下文件中: - 项目根目录的 `package.json` 文件中的 `cloudbaseConfig` 和 `scf` 字段 - `cloudbaseConfig` 字段,对应 `cloudbaserc.json` 根节点配置 - `scf` 字段,为该项目内的云函数的公共配置,在此目录下创建 scf 项目都会读取此配置。 - 云函数目录的 `package.json` 文件中的 `scf` 字段 - `scf` 字段,对应 `cloudbaserc.json` 的 `functions` 配置 > @cloudbase/cli 已使用了 `package.json` 的 `cloudbase` 字段,即如果定义此字段,将忽略 `cloudbaserc.json` 的配置。 ## `tcb-toolkit-cli scf` 创建云函数子项目,该指令要求在一个 tcb 的项目内运行,即起码要求能读取到该目录下的 `package.json` 文件。 ```shell npx tcb-toolkit-cli scf ``` 新建项目自带两个依赖: - [tcb-toolkit](https://www.npmjs.com/package/tcb-toolkit) - [@cloudbase/node-sdk](https://www.npmjs.com/package/@cloudbase/node-sdk) **注意事项:** - 云函数所需配置可通过云函数项目下的 `package.json` 的 `scf` 字段进行配置。 - 每次新建项目时,会自动更新一次 `cloudbaserc.json`。 - 每次新建项目,将自动在根目录 `package.json` 的 `scripts` 字段添加 `deploy:project-name` 的指令。 - 云函数命名约定: - `api-` 前缀,表示为将为其挂载到 http 服务上,main 函数引入类型 `ev: ScfReqEvent`,`api-name` 自动转化为挂载点 `--path /name` - `fn-` 前缀,普通的云函数,main 函数引入类型 `ev: ScfCallEvent` 可通过 `tcb-toolkit-cli aggr` 重新更新写入到根项目的 `cloudbaserc.json`。 ## `tcb-toolkit-cli aggr` 收集 TCB 项目 functions 目录下的所有云函数的 `package.json` 的 `scf` 字段配置,并将结果导出更新到 `cloudbaserc.json` 文件中去。