open-index/open-npm huggingface dataset:
npm package: @ksfcore/nodetools-cli
Description: tools cli for ksf-nodejs
Author: kingstar
Latest version: 1.0.3

# Ksf Nodejs 脚手架及自动化发布工具  
此工具提供Ksf Nodejs 脚手架、自动打包发布的功能。  
通过此工具，可以通过简单的3~4个步骤来开发、发布一个ksf服务。  
## 1. 安装  
`npm install -g @ksfcore/nodetools-cli`
## 2. 使用
### 创建服务  
参考ksf的[Hello World文档](https://github.com/KsfCloud/KsfDocs/tree/master/hello-world)创建一个ksf服务。  
注意选择正确的协议类型， ksf rpc服务选择`ksf协议`， http服务选择`非ksf协议`。  

### 初始化  
`nodetools init`  
根据需要设置选项，其中application、server、obj，必须和创建服务的步骤中一致。  

- 语言支持：javascript、typescript
- 协议支持：http、ksf
- Http框架支持：koa、express、Nodejs原生http模块  


### 开发  
在初始化项目生成的目录下，http协议服务可以直接`npm run dev` 启动服务，开发业务逻辑；  

ksf协议服务首先需要编写协议文件、转换为js/ts代码，按代码中提示配置好相应的`imp对象`，再`npm run dev`启动服务。

### 打包发布  

此工具提供ksf nodejs服务自动打包发布的功能，根据提示输入ksf平台地址、ksf用户中心中创建的token，即可自动打包、发布服务。其中token可根据实际情况选择保存或者不保存到package.json中，非敏感项目或者环境可选择保存。

http协议服务，项目初始化完毕后可直接运行 `npm run upload` 将服务发布至Ksf平台，浏览器中访问 `/hello` 路径即可看到测试输出。  

ksf协议服务，需要先转换ksf协议文件，实现业务逻辑后运行  `npm run upload` 发布至Ksf平台。  

非本工具脚手架创建的项目，可在根目录下运行 `nodetools upload` 来自动打包发布，也可以自行编辑package.json中的script来使用此工具。  

### 通过命令行使用
可以通过传入 `--cmd`来从命令行读取参数  
初始化 `nodetools init --cmd ...`，参数列表：  
```
-V, --version                output the version number
  --cmd                        get options from command line
  --language [language]        project language, can be JavaScript/TypeScript (default: "JavaScript")
  --protocol [protocol]        project protocol, can be http/ksf (default: "http")
  --application [application]  application name (default: "")
  --server [server]            server name (default: "")
  --obj [obj]                  obj name (default: "")
  --httpapp [httpapp]          http app, can be koa/express/native http (default: "koa")
  --ksffile [ksffile]        ksf protocol file name, eg: (default: "Hello.ksf")
  -h, --help                   display help for command
```

发布 `nodetools upload --cmd ...`，参数列表：  
```
-V, --version                output the version number
  --cmd                        get options from command line
  --ksfurl [ksfurl]          ksf url (default: "")
  --token [token]              ksf token (default: "")
  --application [application]  application name (default: "")
  --server [server]            server name (default: "")
  --obj [obj]                  obj name (default: "")
  -h, --help                   display help for command
```
参数要求与通过终端输入时一致。