Serverless 基础篇系列文章 —— 如何使用 serverless 部署前端项目

一、使用serverless部署vue3项目

1、使用脚手架创建一个vue3项目

我们先初始化一个vue3项目

bash 复制代码
npm create vue@latest

启动项目看下:

bash 复制代码
npm run dev

没啥问题

2、将 vue3 项目包装成 Serverless 应用

3、安装 Serverless Framework

通过 npm 安装最新版本的 Serverless Framework

bash 复制代码
npm install -g serverless

4、初始化一个 serverless 应用

快速创建一个serverless应用

bash 复制代码
serverless init website-starter --name example

5、移植 serverless.yml

将这个serverless.yml文件复制到刚刚创建的vue3项目中,然后删除 website-starter 目录

现在的目录结构是这样的:

6、调整下 serverless 配置文件

简单的修改下:

增加了 dist 的目录位置为 ./dist,更改了 bucketNamemy-vue-starter

yaml 复制代码
component: website # 引用的组件名称,这里使用的是tencent-website组件
name: websitedemo # 创建的网站实例的名称
app: example-fc928772 # 网站所属的应用名称(可选)

inputs: # 配置输入参数的部分
  src: # 指定源代码的位置
    src: ./src # 源代码的路径
    index: index.html # 网站的入口文件
    error: index.html # 错误页面的文件
    dist: ./dist # 构建后的代码的输出路径
  region: ap-guangzhou # 网站所在的地区/区域
  bucketName: my-vue-starter # 存储网站文件的存储桶名称
  protocol: https # 网站使用的协议(这里是HTTPS)

解释下这个配置文件,源代码位于 ./src 目录下,入口文件为 index.html,错误页面也使用同一个文件。构建后的代码输出到./dist目录。网站将部署在 ap-guangzhou 地区,并使用名为 my-vue-starter 的存储桶来存储网站文件。

更多配置查看全量配置及配置说明

7、集成自动构建能力

有的同学会问了,上面的 dist 需要每次在项目部署前都要先npm run build,然后再将打包后的dist目录传到服务器上的nginx静态目录下,这样才能访问,这个步骤可以走CI(持续集成)吗?

答案是可以的,我们可以将自动构建的能力集成到serverless部署流程中,只要配置下 hook,在每次发布的时候会先执行 build,就像 github hook 或者 github actions

yaml 复制代码
# serverless.yml文件
component: website
name: vue-starter
app: vue-demo-6cb9842a

inputs:
  src:
    src: ./src
    # 配置了这个hook每次发布的时候会先build
    hook: npm run build
    dist: ./dist
  bucketName: my-vue-starter
  protocol: https

8、部署serverless应用

这一步就会先走代码编译构建,然后执行serverless的部署流程,直接将代码推送到云端

bash 复制代码
serverless deploy

不幸的是,编译过程遇到报错:

提示sh: run-p: command not found,原因是 run-p 这个命令找不到,我们安装下:

bash 复制代码
npm i npm-run-all -D

再重新部署下试试:

bash 复制代码
serverless deploy

部署完毕后,就可以在命令行的输出中查看到静态站点 URL 地址,点击地址访问看下:

本地开发服务serverless 上的服务是一样的:

这样,我们就完成了使用 serverless 来部署 vue3 项目

二、部署react项目

1、快速创建一个react项目

bash 复制代码
npx create-react-app serverless-react-demo --template typescript

启动看下效果:

bash 复制代码
npm run start 

2、将 react 项目包装成 serverless 应用

我们再快速创建一个 serverless 应用:react-starter

bash 复制代码
serverless init website-starter --name react-starter 

老规矩,将 serverless.yml 文件提到我们创建的serverless-react-demo跟目录下,然后删除 react-starter 目录:

我们改下serverless.yml文件:

  • 将打包后的静态文件目录 dist 目录改成 ./build
yaml 复制代码
component: website
name: react-starter
app: react-starter-7ae90038

inputs:
  src:
    src: ./src
    hook: npm run build
    index: index.html
    error: index.html
    dist: ./build
  region: ap-guangzhou
  bucketName: my-react-starter
  protocol: https

3、部署serverless应用

bash 复制代码
serverless deploy

部署完毕后,点击地址访问看下:

看了下,本地开发服务serverless 上的服务也是一样的:

这样,我们就完成了使用 serverless 来部署 react 项目

三、部署angular项目

部署方式和上面手动部署vuereact类似,这就不重复的写了

案例代码

总结

这节课,我们学习了使用 serverless 来部署前端三个框架的方式,其实不难,总结就以下几个步骤:

  • 1、快速创建一个 serverless 应用
  • 2、将前端项目包装serverless 应用
    • serverless 应用的配置文件serverless.yml文件添加到前端项目内
    • 调整 serverless.yml 配置内容
      • 更改打包后的静态文件目录 dist 指向
      • 将自动构建能力集成到serverless部署流程中,添加hooks执行代码编译
  • 3、部署serverless应用,执行代码编译构建和推送资源到云端

参考文档

相关推荐
孤水寒月3 小时前
基于HTML的悬窗可拖动记事本
前端·css·html
祝余呀3 小时前
html初学者第一天
前端·html
耶啵奶膘5 小时前
uniapp+firstUI——上传视频组件fui-upload-video
前端·javascript·uni-app
视频砖家6 小时前
移动端Html5播放器按钮变小的问题解决方法
前端·javascript·viewport功能
lyj1689976 小时前
vue-i18n+vscode+vue 多语言使用
前端·vue.js·vscode
小白变怪兽8 小时前
一、react18+项目初始化(vite)
前端·react.js
ai小鬼头8 小时前
AIStarter如何快速部署Stable Diffusion?**新手也能轻松上手的AI绘图
前端·后端·github
墨菲安全9 小时前
NPM组件 betsson 等窃取主机敏感信息
前端·npm·node.js·软件供应链安全·主机信息窃取·npm组件投毒
GISer_Jing9 小时前
Monorepo+Pnpm+Turborepo
前端·javascript·ecmascript
天涯学馆9 小时前
前端开发也能用 WebAssembly?这些场景超实用!
前端·javascript·面试