Skip to main content

编译与部署

修改服务器配置

在 default.config.ts 或对应环境配置修改

修改端口号
export const SERVER_CONFIG: ServerConfig = {
port: [端口号]
};
使用前缀路径,可在同一域名下通过路径区分部署多个服务
export const SERVER_CONFIG: ServerConfig = {
basePath: '/my-service',
port: [端口号]
};

编译与打包

Summer使用esbuild打包,最终程序会被打包成:

  • 一个可执行文件 /build/index.js
  • 一个source map文件 /build/index.js.map
  • 一个资源文件夹 /build/resource (可选)

执行命令

npm run build 或 npx summer build --env prod
备注

这里的prod是环境名,可以根据命名需求配置生产环境的环境名

生成文件

build/index.js
build/index.js.map
关于打包生成的文件

Summer生成的最终执行文件相当简洁,不再有node_modules目录让部署变得更方便,同时编译打包出的执行文件能够直接检测执行环境
可以通过 node --enable-source-maps index.js 执行,
也可以直接传到 AWS Lambda 阿里云函数FC 等无服务器上执行,不需要再做额外配置

使用资源文件

创建 ./resource 文件夹放入资源文件
./resource 目录会自动被拷贝到 build/resource

获取编译打包时间

打包时间可以用于显示记录包的打包时间

SUMMER_BUILD_TIMESTAMP

启用集群模式

集群模式是NodeJS提供的一种服务器扩展,打开后,NodeJS会以多线程的形式启动多个服务器线程响应请求。一些外部工具类似PM2提供了这样的能力,Summer本身就集成了这项能力,所以你不再需要PM2之类的工具。

src/config/default.config.ts
export const SERVER_CONFIG: ServerConfig = {
port: 8801,
clusterMode: true,
// workersNumber 如果不设置默认为你部署服务器的内核数
// 或者你可以自己设置集群worker数
workersNumber: 4
}

在Linux系统机器部署

  1. 将 build/index.js 和 build/index.js.map 文件传上 linux 服务器

  2. 执行 node --enable-source-maps index.js 启动即可

备注

--enable-source-maps 可以帮助定位debug错误信息,建议开启 不开启启动速度会更快一些些

在Docker/K8S 中部署

  1. 创建 Dockerfile
FROM node:14

WORKDIR /usr/src/app

COPY ./build .

EXPOSE 8801
CMD [ "node", "--enable-source-maps", "index.js" ]
  1. 执行docker打包 docker build . -t <your username>/node-web-app

  2. 执行 docker run -p 80:8801 -d <your username>/node-web-app

在 AWS Lambda 上部署

直接将打包好的 build/index.js 压缩成zip文件上传到Lambda服务器即可

在 阿里云 函数计算 FC 上部署

直接将打包好的 build/index.js 压缩成zip文件上传到FC服务器即可