当前位置: 首页 > Web前端 > JavaScript

基于Vercel+GithubAction部署Nest.js项目

时间:2023-03-27 00:19:07 JavaScript

前言啊,自八月份发文以来,已经连续两个月没有更新了。我承认我太忙了(其实我太懒了)。转眼就到了十一月,天气越来越冷了。胖友们准备好过冬了吗!没有的话,快给我!一月份写了一篇使用vercel+hexo部署博客的教程。点我了解详情。我用vercel的免费资源来部署自己的一些小项目,静态网站等,因为大部分时间都是自己买服务器玩玩。不是很需要,网上一些公开的免费资源就足够我们搭建了。当然部署的是静态网站,所以作为前端,Nodejs项目是必须要玩的,所以今天就给大家介绍一下如何在VercelNode项目上进行部署。在本文中,我使用了Nest.js,这是一个用于构建高效且可扩展的服务器端应用程序的渐进式Node.js框架。好像写的像spring?相信后端同学用起来应该更方便。Nest.js具有以下特点:完美支持TypeScript面向AOP编程支持Typeorm高并发、异步非阻塞IONode.js版spring构建微服务应用那么让我们开始吧!按照教程完成,部署不好打我!准备工作在开始之前,我们需要做一些准备工作;installnest.jsnpmi-g@nestjs/cli新建一个nest.js项目,这里我新建的项目名为blogServer命令:nestnewblogServer新建后安装依赖,通过npmrunstart启动项目,访问端口为3000;当你启动它时,你会看到HelloWorld就可以了。提交到Github项目构建完成后,将项目提交到Github即可。接下来,我们将开始部署项目。部署在Vercel上关联项目1.点击newProject创建一个新项目2.选择你新创建的项目并导入3.跳过创建新团队。个人使用不需要新建团队,团队需要付费4.项目名称随意,框架选择other,根据自己项目package.json中的内容编写构建命令,并填写输出目录根据打包后的文件夹名称。nest.js的默认值如下。保留安装命令的默认值。单击Deploy开始部署。好了,文章到此结束,哈哈哈哈。其实这样部署的nest.js项目打开后会404,所以我们需要进行下一步的操作。配置vercel.json1,在项目根目录下新建文件vercel.json。内容如下,name是你的项目名称,可以和package.json中的name保持一致。{“版本”:2,“名称”:“博客服务器”,“构建”:[{“src”:“dist/main.js”,“使用”:“@vercel/node”}],“路线":[{"src":"/(.*)","dest":"dist/main.js"}]}配置好这个文件后,就可以使用vercel命令行工具在本地部署了。当然前提是你需要安装vercel的脚手架工具,npmi-gvercel安装即可。使用vercel的命令行工具,可以通过如下命令部署项目。将项目打包到本地,npmrunbuild,打包dist文件夹;首先需要登录,这个其实有点类似于npm,verclelogin。执行此命令后,将询问您使用哪个平台登录。我们可以选择GitHub,它会自动打开浏览器进行权限认证,认证成功后登录成功;直接执行vercel--prod,然后进入下一步。当提示部署时,打开vercel平台可以看到会显示正在部署,部署成功后即可正常访问。到这里,项目其实已经部署成功了,但是如果每次都需要手动打包部署,肯定达不到我们的预期,所以我们需要使用GitHubAction进行自动化部署。配置GitHubActionWorkflows在GitHub项目新建工作流,找到Nodejs模板,点击setup开始编写脚本内容,脚本内容如下,name为脚本名称,默认模板会多underrun:npmrunbuild--if-present一行run:npmruntest我们去掉。你也可以直接复制我的这个模板。其中VERCEL_TOKEN、VERCEL_PROJECT_ID、VERCEL_ORG_ID都需要在后面配置。至此,我们的工作流已经创建成功。随后的代码推送或prmerge将触发其执行。#此工作流程将干净安装节点依赖项、缓存/恢复它们、构建源代码并在不同版本的节点上运行测试#有关更多信息,请参阅:https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actionsname:部署服务器blogon:push:branches:[master]pull_request:branches:[master]jobs:build:runs-on:ubuntu-lateststrategy:matrix:node-version:[12.x,14.x,16.x]#查看受支持的Node.js发布时间表https://nodejs.org/en/about/releases/步骤:-使用:actions/checkout@v2-name:使用Node.js${{matrix.node-version}}uses:actions/setup-node@v2with:node-version:${{matrix.node-version}}cache:'npm'-run:npmci-运行:npmrunbuild--if-present-名称:部署到Vercel运行:npxvercel--token${VERCEL_TOKEN}--prodenv:VERCEL_TOKEN:${{secrets.VERCEL_TOKEN}}VERCEL_PROJECT_ID:${{secrets.VERCEL_PROJECT_ID}}VERCEL_ORG_ID:${{secrets.VERCEL_ORG_ID}}接下来我们开始配置以上三个变量。请记住,我们在上一步中执行了vercel--prod命令。执行该命令后,本地会生成一个。vercel文件夹的内容如下。记住projectId和orgId。接下来需要打开GitHub项目中的Settings,选择Secrets,在这里添加三个变量,其中VERCEL_PROJECT_ID和VERCEL_ORG_ID就是上面的projectId和orgId,我们继续设置VERCEL_TOKEN打开vercel平台,找到settings,打开Tokens,点击create新建一个token,我这里已经建好了,叫serverActionToken,这里的token是为了让GitHubAction可以访问vercel项目。新建一个记得复制!!!回到GitHub的Settings-Secrets添加VERCEL_TOKEN,对应的值为上次的token。这样我们的权限就打通了,部署相关的配置就已经OK了。在本地更改内容,提交,工作流会自动开始执行成功。至此,项目部署完毕。项目只要后期有更新,提交后会自动通过GitHubAction进行部署。总结是什么?就这样吧,好吧,你们可以试试看!!!参考链接里的一些博文可能比较老了,因为现在以前都是调用vercel的,但是操作都差不多,会玩workflow的肯定还有更多的方法,大家可以自己玩。https://itnext.io/deploy-nest-js-on-zeit-now-with-github-actions-86bc226e7371https://hyper-text.org/archives/2021/07/nextjs_vercel_deploy.shtmlhttps://aaronfrancis。com/2021/the-perfect-vercel-github-actions-deployment-pipelinehttps://www.eliostruyf.com/deploy-site-vercel-github-actions-releases/