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月前
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
490 0
|
3月前
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
3月前
|
JavaScript 前端开发 开发者
Vue 自定义进度条组件封装及使用方法详解
这是一篇关于自定义进度条组件的使用指南和开发文档。文章详细介绍了如何在Vue项目中引入、注册并使用该组件,包括基础与高级示例。组件支持分段配置(如颜色、文本)、动画效果及超出进度提示等功能。同时提供了完整的代码实现,支持全局注册,并提出了优化建议,如主题支持、响应式设计等,帮助开发者更灵活地集成和定制进度条组件。资源链接已提供,适合前端开发者参考学习。
339 17
|
3月前
|
JavaScript 前端开发 UED
Vue 表情包输入组件实现代码及详细开发流程解析
这是一篇关于 Vue 表情包输入组件的使用方法与封装指南的文章。通过安装依赖、全局注册和局部使用,可以快速集成表情包功能到 Vue 项目中。文章还详细介绍了组件的封装实现、高级配置(如自定义表情列表、主题定制、动画效果和懒加载)以及完整集成示例。开发者可根据需求扩展功能,例如 GIF 搜索或自定义表情上传,提升用户体验。资源链接提供进一步学习材料。
182 1
|
3月前
|
存储 JavaScript 前端开发
如何高效实现 vue 文件批量下载及相关操作技巧
在Vue项目中,实现文件批量下载是常见需求。例如文档管理系统或图片库应用中,用户可能需要一次性下载多个文件。本文介绍了三种技术方案:1) 使用`file-saver`和`jszip`插件在前端打包文件为ZIP并下载;2) 借助后端接口完成文件压缩与传输;3) 使用`StreamSaver`解决大文件下载问题。同时,通过在线教育平台的实例详细说明了前后端的具体实现步骤,帮助开发者根据项目需求选择合适方案。
235 0
|
21天前
|
弹性计算 编解码 大数据
性价比最高提升50%!阿里云企业级云服务器上新
阿里云ECS云服务器推出全新升级的u2系列实例,包括基于Intel的u2i实例与首个基于AMD的u2a实例,提供企业级独享算力,综合性价比最高提升50%。u2i实例已开放公测,适用于中小型数据库、企业网站建设等场景。同时发布基于AMD的第九代旗舰实例g9ae,性能提升65%,适用于大数据、视频转码等密集型业务。
135 0
|
1月前
|
弹性计算 运维 安全
阿里云轻量应用服务器是什么?看完你就知道了
阿里云轻量应用服务器是面向网站建设、开发测试等轻量场景的云服务器,按套餐售卖,内置多种应用镜像,支持一键部署,操作简单,适合个人开发者和中小企业使用。
220 0
|
2月前
|
存储 弹性计算 数据挖掘
阿里云2核4G5M带宽199元云服务器测评:价格、性能、适用场景与续费优势详解
阿里云目前活动中推出的“2核4G5M带宽199元1年”云服务器,是当下深受初创企业用户喜爱的云服务器。本文将从价格优势、性能优势和续费优势等几个方面,详细解析这款阿里云199元云服务器的各项特点,帮助大家更好地了解这款云服务器的性能和应用场景,以供选择参考。
|
1月前
|
存储 安全 数据挖掘
阿里云特惠云服务器轻量级38元,经济型99元,通用算力型199元性能、适用场景及选择参考
2025年,阿里云推出了3款特惠云服务器,轻量云服务器2核2G200M峰值带宽38元一年,经济型e实例云服务器2核2G3M带宽99元1年,通用算力型u1实例2核4G5M带宽199元1年。本文将深度解析这三款现象级产品的配置亮点、适用场景,以供参考和选择。
|
1月前
|
弹性计算 运维 负载均衡
阿里云轻量应用服务器产品介绍、收费标准以及搭建个人博客教程参考
本文为大家介绍阿里云轻量应用服务器的产品优势、应用场景、使用须知、地域与网络连通性、与云服务器ECS的区别以及使用轻量应用服务器搭建WordPress个人博客的图文教程,以供大家了解和使用轻量应用服务器。

热门文章

最新文章