概要

@midwayjs/faas-cli 是 midway-faas 的配套工具体系,包含了所有 FaaS 开发过程中相关的功能,包括开发,测试,调试,构建,发布等阶段,整个工具命令+生命周期的插件化机制,支持了阿里云、腾讯云等平台能力的拓展。

安装

  1. npm i @midwayjs/faas-cli -g // 安装到全局

:::info 1、全局命令为 “f” 或者 “mf”,安装完之后可以通过 “f” 或者 “f -h” 查看命令信息
2、通过 “f -v” 查看当前版本 :::

命令:创建函数 create

create 命令用于快速创建一个脚手架,执行 f create -h 可以看到帮助文档。

  1. project f create -h
  2. Plugin: Create
  3. create ........................ Create new ali faas service
  4. --template / -t .................... Template for the service. Available templates: "ginkgo-node10", "fc-node8", "layer" and "plugin"
  5. --path / -p ........................ The path where the service should be created (e.g. --path my-service)

命令:本地调用 invoke

invoke 命令用于本地开发时的函数调用,invoke包含了运行时的完整流程。

  1. f invoke -h
  2. Plugin: MidwayInvoke
  3. invoke ........................ Invoke a local function
  4. --function / -f (required) ......... The function name
  5. --type / -t ........................ Function event type
  6. --data / -d ........................ Function Invoke data
  7. --context / -c ..................... Function Context data

常用:

  1. f invoke -f hello1 -d 123 // 调用函数 hello1,并且对函数传入参数 123
  2. f invoke -f hello1 -t http -c ctx.json -d a.json // 指定测试 http 触发器,对函数 hello1 传入 a.json 中的内容

:::info 1、如果不传入触发器(事件)类型,默认会取该函数的第一个触发器进行测试。
2、-f 必须传入指定的函数名,函数名从 f.yml 中获取,注意不是 handler :::

同时由于函数代码为typescript,因此在本地会使用tsc进行代码构建,构建后的代码会存放到 dist 目录中。

命令:本地单步调试

在invoke本地调用的能力基础上,提供了 —debug 参数,用于开启本地单步调试能力。【Node.js 10.15+】

  1. f invoke -f index --debug

方式一【推荐】:vscode + auto attach

如果使用vscode,并且开启了debug auto attach,执行上述命令即可进行debug调试了~

debug auto attach 可以通过 command + shift + p 搜索 auto attach 进行开启
image.png


方式二:vscode

如果使用vscode并不想(或无法,比如在webide中)开启debug auto attach可以添加此配置到debug中:

image.png

  1. {
  2. "name": "Midway Debug",
  3. "type": "node",
  4. "request": "launch",
  5. "cwd": "${workspaceRoot}",
  6. "runtimeExecutable": "f",
  7. "runtimeArgs": [
  8. "invoke",
  9. "-f",
  10. "index",
  11. "--debug"
  12. ],
  13. "console": "integratedTerminal",
  14. "protocol": "auto",
  15. "restart": true,
  16. "port": 9229,
  17. "autoAttachChildProcesses": true
  18. }

先在代码的左侧序号栏点击添加断点,然后点击上部的启动▶️按钮


命令:单元测试 test

使用 mocha,直接测试 *.test.ts 文件。

  1. f test -h
  2. Plugin: MidwayTest
  3. test .......................... Test a Serverless service

常用:

  1. f test // 测试整个目录

命令:打包构建 package

用于快速构建,打包代码,目前构建的代码会保存到 .serverless 这个临时目录中。

  1. project f package -h
  2. Plugin: MidwayFaaSPackage
  3. package ....................... Packages a Midway service
  4. --function / -f .................... the name of function you want to package
  5. --env / -e ......................... environment of package, the value can be local or aone

常用:

  1. f package // 打包当前目录
  2. f package --function hello1 // 通过函数名打包指定的函数

命令:部署发布

用于快速部署到云平台,如阿里云 FC 和 腾讯云 SCF 等。

  1. f deploy