跳到主要内容

Node 插件

Tencent CloudBase Framework Node Plugin

Tencent CloudBase Framework Node Plugin

Github License Npm version issue PRs Welcome star

云开发 CloudBase Framework 框架「Node.js App」插件: 通过云开发 CloudBase Framework 框架将 Node 应用一键部署云开发环境,提供自动弹性伸缩的高性能 Node 应用服务,支持底层部署为函数或者 云托管,可以搭配其他插件如 Website 插件、函数插件实现云端一体开发。

功能特性#

  • 无须关心底层架构: 只需要开发业务服务,不用适配函数或者容器
  • 节约成本: 资源伸缩,弹性扩缩容,灵活计费,极大节约资源成本
  • 框架支持: 无缝支持原生和前端框架构建的项目
    • 原生 Node.js
    • Express
    • Koa

使用方法#

步骤一. 准备工作#

具体步骤请参照 准备云开发环境和 CloudBase CLI 命令工具

步骤二. 进入 Node 项目目录进行初始化#

如果目前已有 Node 应用项目

cloudbase

如果想全新开始一个项目,可以直接执行 init 来从模板开始一个项目

cloudbase init

步骤三. 一键部署#

cloudbase framework deploy

配置#

默认情况下不需要任何配置即可使用,以下配置参数针对有特殊需求的场景

配置示例#

cloudbase init 之后会创建云开发的配置文件 cloudbaserc.json,可在配置文件的 plugins 里修改和写入插件配置

{  "envId": "{{envId}}",  "framework": {    "plugins": {      "server": {        "use": "@cloudbase/framework-plugin-node",        "inputs": {          "entry": "app.js",          "path": "/nodeapp",          "name": "nodeapp"        }      }    }  }}

配置参数说明#

entry#

默认 app.js

Node 服务入口文件,相对于projectPath,需要导出 app 或者 server 的实例,同时也支持导出异步获取 app 的 tcbGetApp 方法,方法的返回值为 app 或者 server 的实例。

如 koa 服务的 app.js

const Koa = require('koa');const { router } = require('./routes/');
const app = new Koa();
app.use(router.routes());
module.exports = app;

nest 服务的 app.js

const express = require('express');const { NestFactory } = require('@nestjs/core');const { ExpressAdapter } = require('@nestjs/platform-express');const { AppModule } = require('./dist/app.module');
const expressApp = express();const adapter = new ExpressAdapter(expressApp);
exports.tcbGetApp = async () => {  const app = await NestFactory.create(AppModule, adapter);  await app.init();  return expressApp;};

path#

必填,访问子路径,如 /node-app

name#

必填,服务名,如node-app

projectPath#

选填,指定 Node 服务所在目录,相对于当前项目根目录

buildCommand#

0.5.x 版本以后支持

选填,指定构建命令,比如npm run build

platform#

选填,底层使用平台,支持 container( 云托管) 和 function (云函数), 默认是 function

containerOptions#

选填,当 platform 选择 container 时,可以支持自定义更多高级设置,例如 CPU 内存等

例如

{  "use": "@cloudbase/framework-plugin-node",  "inputs": {    "entry": "app.js",    "path": "/nodeapp",    "name": "nodeapp",    "platform": "container",    "containerOptions": {      "cpu": 2,      "mem": 2    }  }}

具体配置信息请参考 @cloudbase/framework-plugin-container 配置

functionOptions#

选填,当 platform 选择 function 时,可以支持自定义更多高级设置,例如 VPC 环境变量等

例如

{  "use": "@cloudbase/framework-plugin-node",  "inputs": {    "entry": "app.js",    "path": "/nodeapp",    "name": "nodeapp",    "platform": "function",    "functionOptions": {      "timeout": 5,      "envVariables": {        "TEST_ENV": 1      },      "vpc": {        "vpcId": "xxx",        "subnetId": "xxx"      }    }  }}

具体配置信息请参考 @cloudbase/framework-plugin-function 配置

wrapExpress#

选填,当 platform 选择 function 时,可以支持自动为函数包上一层 express

例如

{  "envId": "fx",  "framework": {    "plugins": {      "server": {        "use": "@cloudbase/framework-plugin-node",        "inputs": {          "entry": "./api/index.js",          "path": "/api",          "name": "github-stats-api",          "wrapExpress": true        }      },      "pin": {        "use": "@cloudbase/framework-plugin-node",        "inputs": {          "entry": "./api/pin.js",          "path": "/api/pin",          "name": "github-stats-pin",          "wrapExpress": true        }      }    }  }}

更多插件#

请访问 CloudBase Framework 插件列表 搭配使用其他插件

文档资料#