Vue-CLI 3 scp2自动部署项目至服务器的方法

yizhihongxing

下面是“Vue-CLI 3 scp2自动部署项目至服务器的方法”的完整攻略。

1. 安装scp2与ssh2

首先需要安装scp2ssh2,可以通过npm安装。

npm install scp2 ssh2 --save-dev

2. 准备打包脚本

在package.json中新增打包脚本命令:

"build:prod": "vue-cli-service build --mode production"

在项目根目录下新建deploy.js文件,编辑代码如下:

const SCP2 = require('scp2');
const SSH2 = require('ssh2');
const ora = require('ora');
const chalk = require('chalk');
const { name, version } = require('./package.json');

const SERVER = {
  host: 'your server ip',
  port: 22,
  username: 'your username',
  password: 'your password',
  path: '/usr/share/nginx/html' // 项目部署路径
};

const localPath = 'dist';
const remotePath = `${SERVER.path}/${name}/${version}`;

const spinner = ora(`正在部署项目:${chalk.cyan(name)}(${chalk.magenta(version)})`).start();

SCP2.scp(
  localPath,
  {
    ...SERVER,
    path: remotePath
  },
  function(err) {
    if (err) {
      spinner.fail(`部署项目 ${chalk.cyan(name)} 失败`);
      throw err;
    }
    spinner.succeed(`部署项目 ${chalk.cyan(name)} 成功!`);
    SSH2.connect(SERVER);
    SSH2.on('ready', function() {
      SSH2.exec(`cd ${SERVER.path} && rm -rf current && ln -sf ${remotePath} current`, function(
        err,
        stream
      ) {
        if (err) {
          spinner.fail(`创建current链接失败`);
          throw err;
        }
        stream
          .on('close', function() {
            spinner.succeed(`创建current链接成功`);
            SSH2.end();
          })
          .on('data', function(data) {
            console.log('STDOUT: ' + data);
          })
          .stderr.on('data', function(data) {
            console.log('STDERR: ' + data);
          });
      });
    });
  }
);

3. 部署命令

在package.json中新增部署命令:

"deploy": "npm run build:prod && node deploy.js"

4. 执行部署

执行以下命令即可将项目部署至服务器:

npm run deploy

示例说明

示例一

deploy.js文件中,代码const SERVER = { ... }定义了服务器信息。需要修改为自己的服务器信息。例如,如果服务器是通过密钥认证登录,则需要将username改为服务器登录用户名,将password改为服务器密钥路径。

示例二

在执行部署命令npm run deploy时,会先执行npm run build:prod,打包出dist目录,然后将dist目录通过scp命令部署到服务器上。最后执行ssh命令,将current指向最新的部署版本。

以上两个示例是其中的一部分内容,更详细的内容请参考完整的攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue-CLI 3 scp2自动部署项目至服务器的方法 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue-calendar-component 封装多日期选择组件的实例代码

    那么我们开始讲解“vue-calendar-component 封装多日期选择组件的实例代码”的攻略。 1. 简介 vue-calendar-component 是一个基于 Vue 的日历组件,支持单选、范围选择、多选等模式,还支持设置日期限制、自定义样式等功能。它的代码托管在 Github 上,并提供了详细的文档与示例。 2. 安装与使用 通过 npm 安…

    Vue 2023年5月29日
    00
  • 老生常谈vue的生命周期

    下面我就来详细讲解一下“老生常谈Vue的生命周期”的完整攻略。 什么是Vue的生命周期? Vue的生命周期简单来说,是指Vue实例从创建、更新到销毁的整个过程中,会发生一系列的钩子函数。这些钩子函数被称为“生命周期钩子”,它们可以在特定的时刻进行特定的操作。 Vue的生命周期包含哪些钩子函数? Vue的生命周期包含以下钩子函数: beforeCreate:在…

    Vue 2023年5月28日
    00
  • Vue数字输入框组件示例代码详解

    下面我来详细讲解「Vue数字输入框组件示例代码详解」的完整攻略: 1. 简介 此篇文章介绍了一个基于Vue.js的数字输入框组件代码,包含了组件的使用和原理分析。该组件可以通过点击增加或减少数字的值,并且支持通过键盘输入数字。 2. 示例说明 以下为组件代码示例: 组件模板代码 <template> <div class="num…

    Vue 2023年5月27日
    00
  • vue.js开发环境安装教程

    Vue.js开发环境安装教程 Vue.js是一个用于构建用户界面的渐进式的JavaScript框架。在开始开发Vue.js应用程序之前,必须安装Vue.js开发环境。本文将介绍如何安装Vue.js,以便能够使用该框架构建Web应用程序。 步骤1:安装Node.js Node.js是JavaScript运行时环境。Vue.js需要Node.js才能运行。因此,…

    Vue 2023年5月28日
    00
  • 详解vue-property-decorator使用手册

    详解vue-property-decorator使用手册 简介 vue-property-decorator是Vue.js的一个装饰器库,可以简化在Vue组件中使用的代码。它提供了许多便捷的装饰器,可以为组件的class、props、data、computed、methods以及生命周期钩子等添加修饰符。 使用 安装 你可以使用npm或yarn命令进行安装,…

    Vue 2023年5月27日
    00
  • vue3.0 加载json的方法(非ajax)

    Vue 3.0 中加载 JSON 文件非常简单,可以直接使用内置的 import 语法来加载 JSON 文件,而不需要使用 Ajax。下面是完整攻略: 步骤 在你的 Vue 3.0 项目中创建 JSON 文件。例如,创建一个名为 data.json 的文件并在其中添加以下内容: { "name": "John", &q…

    Vue 2023年5月28日
    00
  • Vue 组件(component)教程之实现精美的日历方法示例

    针对“Vue 组件(component)教程之实现精美的日历方法示例”,我可以介绍它的完整攻略,包括以下几部分内容: 理解 Vue 组件 在进入日历组件的实现前,首先需要理解什么是 Vue 组件。Vue 组件是 Vue.js 中的基本概念,它可以把一个页面拆分成若干独立、可重用的模块,并将这些模块进行拼装组合成为一个完整的页面。因此,理解 Vue 组件的分类…

    Vue 2023年5月28日
    00
  • Vue.js如何利用v-for循环生成动态标签

    Vue.js是一种流行的JavaScript框架,它使得开发者可以更快地构建动态Web应用程序。v-for指令是Vue.js框架中用于迭代遍历数组数据和对象数据的指令之一。本文将从基础的Vue.js语法入手,讲解如何利用v-for指令动态生成标签。 1. 基础语法 使用v-for指令需要在HTML标签上添加v-for属性并指定循环的数据源,语法如下: &lt…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部