基于PowerShell实现Vue前端项目自动化部署到Nginx服务器
在前端项目开发过程中,部署是一个重要环节。手动部署不仅繁琐,还容易出错。本文将分享如何使用PowerShell脚本实现Vue前端项目的自动化部署,涵盖项目构建、压缩、上传到服务器以及在服务器上解压缩并部署到Nginx的全流程。借助这个脚本,能大幅提升部署效率,减少人为错误。
一、脚本核心功能概述
本PowerShell脚本旨在简化Vue前端项目的部署流程。其核心功能包括:
- 项目构建:在本地环境中清理之前的构建产物,然后执行
yarn build
命令完成项目构建,并验证构建结果,确保生成了必要的文件,如index.html
。 - 文件压缩:将构建后的
dist
目录进行压缩,生成dist.zip
文件。压缩过程中,会先创建临时目录,复制文件并确保路径使用正斜杠,再选择合适的压缩工具进行压缩,支持7-Zip
和PowerShell自带的压缩命令。 - 服务器交互:利用
plink
和pscp
工具,实现与远程服务器的连接、文件上传以及执行一系列远程命令。在连接服务器前,会先缓存服务器的主机密钥,保证后续交互安全。 - 服务器部署:在远程服务器上,依次执行切换目录、删除旧的部署目录、创建新目录、检查压缩文件、解压文件、验证解压结果、设置文件权限、检查Nginx配置、重启Nginx服务以及清理临时文件等操作,完成项目在Nginx服务器上的部署。
二、脚本关键代码解析
(一)环境设置与变量定义
# Force UTF-8 encoding, no BOM
$PSDefaultParameterValues['*:Encoding'] = 'utf8'
[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8
[System.Console]::InputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
# Set codepage to UTF-8
try {
chcp 65001 | Out-Null
} catch {
Write-Host "Warning: Unable to set console codepage to UTF-8"
}
$ErrorActionPreference = "Stop"
$projectPath = "D:\CursorProjects\ba0318"
$distPath = "$projectPath\dist"
$zipPath = "$projectPath\dist.zip"
这段代码设置了PowerShell的编码为UTF - 8,确保在处理文件和输出日志时不会出现编码问题。同时,定义了项目路径、构建输出目录路径和压缩文件路径等关键变量。
(二)读取配置文件
try {
Write-Host "Reading configuration file..."
$configContent = Get-Content -Path "$projectPath\deploy.config.json" -Raw
$config = $configContent | ConvertFrom-Json
# Validate configuration
if ([string]::IsNullOrEmpty($config.remoteHost)) {
throw "Remote host is empty in config file"
}
Write-Host "Config loaded - Remote Host: $($config.remoteHost)"
$remoteHost = $config.remoteHost
$remoteUser =