Vue打包并自动部署到指定服务器

文章讲述了如何在Vue项目的根目录下配置依赖,如SCP2、Chalk、SSH2和Cross-env,用于自动化部署。通过创建upload.server.js文件,设置服务器信息,使用SCP2进行文件传输,SSH2进行服务器交互,实现将本地构建的dist目录删除并替换到远程服务器的指定路径,从而完成项目的发布。在package.json中添加执行脚本,可以一键打包并上传项目到服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装需要的依赖

npm install scp2 --save-dev
npm install chalk --save-dev
npm install ssh2 --save-dev
npm install cross-env --save-dev 

在vue项目根目录新建upload.server.js文件

// 服务器配置信息
const server = {
  host: '192.168.211.230', // 服务器ip
  port: '22', // 端口一般默认22
  username: 'root', // 用户名
  password: '******', // 密码
  serverPath: '/home/project/frontend/',  // 服务器路径(结尾加/)
  packageName: 'dist', // 上传到服务器的位置
  localPath:'./dist/' // 本地打包文件路径
}
 
// 引入scp2
const client = require('scp2');
const ora = require('ora');
const spinner = ora('正在发布到服务器...');
 
// 创建shell脚本
const Client = require('ssh2').Client;
const conn = new Client();
 
console.log('正在建立连接');
conn.on('ready', function () {
  console.log('已连接')
  if(!server.packageName){
    console.log('连接已关闭');
    conn.end()
    return false;
  }
  // 这里我拼接了放置服务器资源目录的位置 ,首选通过rm -rf删除了这个目录下的文件
  conn.exec('rm -rf ' + server.serverPath + server.packageName + '/*', function (err, stream) {
    console.log('删除文件');
    stream.on('close', function (code, signal) {
      console.log('开始上传')
      spinner.start();
      client.scp(server.localPath, {
        "host": server.host,
        "port": server.port,
        "username": server.username,
        "password": server.password,
        "path": server.serverPath + server.packageName
      }, err => {
        spinner.stop();
        if (!err) {
          console.log('项目发布完毕');
        } else {
          console.log("err", err);
        }
        conn.end(); // 结束命令
      })
    }).on('data', function (data) {
        console.log('STDOUT: ' + data);
    }).stderr.on('data', function (data) {
      console.log('STDERR: ' + data);
    });
  })
}).connect({
  host: server.host,
  port: server.port,
  username: server.username,
  password: server.password
  // privateKey: '' // 使用密钥登录
});

在package.json中"scripts"节点新加执行方法

"scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "test": "vue-cli-service build --mode test",
    "build:docker": "vue-cli-service build --dest=./docker/dist/",
    "lint": "vue-cli-service lint",
    "analyze": "vue-cli-service build --report",

    "upload": "node upload.server.js", // 上传
    "publish": "npm run build:prod && npm run upload" // 打包并上传到服务器
  }

打包成功之后的结果

在这里插入图片描述

### Vue.js 项目的打包部署教程 #### 1. 打包过程 为了将 Vue.js 应用程序准备好用于生产环境,需要将其构建为静态资源文件。这可以通过执行 `npm run build` 命令来完成。此命令会基于项目中的配置生成优化过的静态资产文件,通常位于 `dist/` 目录下[^1]。 如果需要自定义打包行为,可以编辑或新增 `vue.config.js` 文件来进行特定设置。例如,指定输出路径、调整公共路径(publicPath)、启用 Gzip 压缩等功能都可以在此处实现[^4]。 以下是简单的 `vue.config.js` 配置示例: ```javascript module.exports = { publicPath: process.env.NODE_ENV === 'production' ? '/your-path/' : '/', outputDir: 'dist', assetsDir: 'static' }; ``` #### 2. 部署服务器 一旦完成了打包操作,下一步就是将这些静态文件部署到目标 Web 服务器上。常见的选择包括 Nginx 和 Apache;对于 Java 生态系统的用户来说,也可以考虑 Tomcat 作为容器运行服务[^2]。 ##### 使用 Nginx/Apache 进行部署 当选用像 Nginx 或者 Apache 的 HTTP 服务器时,主要任务是对它们进行适当配置以便能够正确提供来自 `dist/` 文件夹内的内容给客户端访问。 Nginx 示例配置如下所示: ```nginx server { listen 80; server_name example.com; root /path/to/dist/; index index.html; location / { try_files $uri /index.html; # 支持单页应用路由模式 } } ``` ##### 利用 Tomcat 实现部署 针对希望借助于 Servlet 容器如 Tomcat 来承载其前端工程的情况,则需把整个 dist 文件夹复制粘贴进入 tomcat/webapps 下面的一个新目录里去[^3]^。接着启动或者重启 Tomcat 即可使得该站点生效。 注意,在某些情况下可能还需要修改默认端口号以及处理跨域请求等问题。 #### 总结 综上所述,无论是采用传统的反向代理型 web-server (比如 nginx/apache),还是嵌入式的 servlet-container(tomcat),都需要先经过有效的本地测试之后再正式上线发布。同时也要关注安全性和性能调优等方面的工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端全栈分享站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值