Vue项目打包完后如何自动上传至服务器

简介: Vue项目打包完后如何自动上传至服务器

前端部署项目方案



前端部署


  1. 通过npm run build,构建前端静态资源文件
  2. 只需上传构建后的资源文件,然后上传至服务器指定目录
  3. 配置相关nginx或者其他相关服务,访问资源文件


服务器部署


  1. 上传前端项目文件
  2. 构建服务器前端环境,一般需要执行npm i,安装构建依赖
  3. 执行package.json中的scripts中配置打包相关命令
  4. 然后将打包的文件放置指定目录中
  5. 配置相关nginx或者其他相关服务,访问资源文件


前端部署VS服务器部署


  1. 服务器部署会通过npm i,安装一系列依赖包,这些依赖包很可能因为服务器上打包环境和本地打包环境不一致出现bug,前端部署本身开发机器已经安装好一切环境了,前端部署来发布其实是比较高效的选择,但我并不推荐这样做,这样源文件(当然源文件也在git或者svn上)是在本地开发者的电脑,而且有的公司会有专门的打包服务器部署
  2. 前端部署,后端部署人员不需要关注前端一些构建命令,以及环境变量等等问题


如何操作


已不见面5.0开标系统为列子


创建连接服务器文件


在根目录创建upload.server.js文件


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


const client = require('scp2');


scp2是一个命令行工具,可以连接到服务器上,能快速执行文件拷贝、下载、上传等

scp2具体API


constClient = require('ssh2').Client;


ssh2连接服务,能执行一些相关命令等等,其实就使用ssh2也能够完成文件的上传,下载等等,不要用到scp2


ssh2具体API参数github


配置启动项


在package.json中启动


这里我以测试环境为例子


"scripts": {
    "test": "vue-cli-service build --mode test", // 构建测试包
    "upload": "node upload.server.js", // 上传服务器文件
    "publish": "npm run test && npm run upload" // 发布命令(执行以上两个命令)
},


在命令行中执行npm run publish,效果如下


首选执行了vue-cli-service build --mode test命令


image.png

然后在执行完毕后,执行了node upload.server.js


image.png


查看服务器文件也是更新后


image.png

通过webpack执行node脚本



如果你的项目是以vue-cli构建的项目,在vue.config.js中的configureWebpack模块中


configureWebpack:config=>{
         const plugins = [];
    apply:(compiler)=>{
                    // 编译完成后
                    compiler.hooks.done.tap('DonePlugin', compilation => {
                        console.log('编译完成')
                        // 通过配置 package.json , 执行指定node.js脚本
                        exec('npm run upload', {stdio: 'inherit'});
                    });
       }
    return { plugins }
}


compiler.hooks.done.tap 是webpack提供的api,DonePlugin是构建完成的一个指令,详细webpack构建命令,然后在执行node脚本程序


直接通过node执行文件


直接执行的化,需要两步走,一步需要先获得前端编译好的静态资源文件,二步在调用上传脚本


npm run test
node upload.server.js


其实package.json就是执行了指定的node脚本,只不过整理的更有规范了


服务端部署



可以使用Jenkins,具体使用参考,实战笔记:Jenkins打造强大的前端自动化工作流,可视化管理,推荐使用


总结



服务器连接配置应当放在.env.xxx环境文件中做配置,这样可以针对不同的项目自动上传不同环境服务器文件


以上前端部署,只是刚好适应了公司目前前端打包现状

相关文章
|
3月前
|
缓存 监控 UED
升级 Vue3 时,如何减少打包体积的增加?
升级 Vue3 时,如何减少打包体积的增加?
248 59
|
3月前
|
API UED
升级 Vue3 后,项目的打包体积会有什么变化?
升级 Vue3 后,项目的打包体积会有什么变化?
144 57
|
2月前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
331 3
|
2月前
|
前端开发 JavaScript Java
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
81 4
|
2月前
|
JavaScript 前端开发
|
2月前
|
Java Shell Maven
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
125 4
|
2月前
|
前端开发 Java Shell
后端项目打包上传服务器部署运行记录
后端项目打包上传服务器部署运行记录
43 0
|
2月前
|
Java Linux Maven
服务器部署之项目打包及命令行输出
服务器部署之项目打包及命令行输出
37 0
|
3月前
|
JavaScript Linux 开发工具
如何将nodejs项目程序部署到阿里云服务器上
该文章详细描述了将Node.js项目部署到阿里云服务器的步骤,包括服务器环境配置、项目上传及使用PM2进行服务管理的过程。
|
7月前
|
JavaScript API
【vue实战项目】通用管理系统:api封装、404页
【vue实战项目】通用管理系统:api封装、404页
77 3