云开发 CloudBase Framework 框架「Node.js App」插件: 通过云开发 CloudBase Framework 框架将 Node 应用一键部署云开发环境,提供自动弹性伸缩的高性能 Node 应用服务,支持底层部署为函数或者 云托管,可以搭配其他插件如 Website 插件、函数插件实现云端一体开发。
- 无须关心底层架构: 只需要开发业务服务,不用适配函数或者容器
- 节约成本: 资源伸缩,弹性扩缩容,灵活计费,极大节约资源成本
- 框架支持: 无缝支持原生和前端框架构建的项目
原生 Node.jsExpressKoa
具体步骤请参照 准备云开发环境和 CloudBase CLI 命令工具
如果目前已有 Node 应用项目
cloudbase如果想全新开始一个项目,可以直接执行 init 来从模板开始一个项目
cloudbase initcloudbase 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"
}
}
}
}
}默认 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;
};必填,访问子路径,如 /node-app
必填,服务名,如node-app
选填,指定 Node 服务所在目录,相对于当前项目根目录
0.5.x 版本以后支持
选填,指定构建命令,比如npm run build
选填,底层使用平台,支持 container( 云托管) 和 function (云函数), 默认是 function
选填,类型 boolean,是否需要安装依赖,默认值 true, 如果依赖私有 npm 包需要填写 false
选填,当 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 配置
选填,当 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 配置
选填,当 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 插件列表 搭配使用其他插件
