FUNC - 轻量类型化 CLI 框架

快速开始

请先确保已安装新版 NodeJS 和 NPM、pnpm 等包管理器。执行一个命令即可启动交互式项目创建器:

npm init func
# or
pnpm create func

开发

创建初始项目后,你会看到这些文件:

.
|-- src
|   |-- app.module.ts       application module
|   |-- commands
|   |   |-- hello.ts        "hello" command
|   |   |-- major.ts        empty invocation, --help, --version
|   |   +-- index.ts        command list
|   +-- index.ts            runs AppModule
|-- tests                   testcases
|   |-- commands            test for commands
|   +-- utils               test utils
|-- package.json
|-- tsconfig.json
+-- README.md

开始编辑前,先安装依赖并准备开发环境:

npm i
npm run dev --

到这里,准备工作就完成了。

你可以浏览 commands 中的示例,修改它们,然后通过本地 TypeScript 入口运行命令:

npm run dev -- hello
npm run dev -- --version

模板会通过根应用模块注册命令:

import { FuncModule } from 'func'
import { commands } from './commands'

@FuncModule({
  commands,
})
export class AppModule {}

命令是一个带有一个或多个 @Handler 方法的类:

import { Command, Handler } from 'func'

@Command({
  name: 'hello',
  description: 'print hello text',
})
export class Hello {
  @Handler()
  run() {
    console.log('hello command trigger!')
  }
}

打包

如果你使用默认模板创建项目,只需要一个命令即可打包:

npm run build

命令执行后,项目会被打包到配置的输出目录。

funcgo build 会打包配置的入口,并写出可执行的 bin.js。模板已经把 package.json#bin 指向该生成文件。

发布

构建产物生成后即可发布包。模板已经把 package.json#bin 指向生成的可执行文件。