资讯专栏INFORMATION COLUMN

五步带你完成vue-cli 项目打包一键部署(测试)服务

cgh1999520 / 2455人阅读

摘要:初始化项目测试服务已经准备前提已经准备好了注意一键部署都可以使用在根目录新建文件夹类容如下类容如下文件类容如下正在发布到生产测试服务器这个路径是你需要上传到服务器的文件夹路径发布失败成功发布到生产测试服务器文件类容如下读取环境变量文件判断打

初始化vue项目, 测试服务已经准备(前提已经准备好了)
注意: 一键部署 vue2.0~3.0 都可以使用
1、在根目录 新建deploy 文件夹:

.env.dev类容如下
    VUE_APP_SERVER_ID=0
.env.prod类容如下
    VUE_APP_SERVER_ID=1
index.js 文件类容如下:
    const scpClient = require("scp2");
    const ora = require("ora");
    const chalk = require("chalk");
    const server = require("./products");
    const spinner = ora("正在发布到" + (process.env.NODE_ENV === "prod" ? "生产" : "测试") + "服务器...");
    spinner.start();
    scpClient.scp(
      "./Vue3.0", // 这个路径是你需要上传到服务器的文件夹路径
      {
        host: server.host,
        port: server.port,
        username: server.username,
        password: server.password,
        path: server.path
      },
      function (err) {
        spinner.stop();
        if (err) {
          console.log(chalk.red("发布失败.
"));
          throw err;
        } else {
          console.log(chalk.green("Success! 成功发布到" + (process.env.NODE_ENV === "prod" ? "生产" : "测试") + "服务器! 
"));
        }
      }
    );

    
products.js 文件类容如下:
    /*
     *读取env环境变量
     */
    const fs = require("fs");
    const path = require("path");
    // env 文件 判断打包环境指定对应的服务器id
    const envfile = process.env.NODE_ENV === "prod" ? "./.env.prod" : "./.env.dev";
    // env环境变量的路径
    const envPath = path.resolve(__dirname, envfile);
    // env对象
    const envObj = parse(fs.readFileSync(envPath, "utf8"));
    const SERVER_ID = parseInt(envObj["VUE_APP_SERVER_ID"]);
    
    function parse(src) {
      // 解析KEY=VAL的文件
      const res = {};
      src.split("
").forEach(line => {
        // matching "KEY" and "VAL" in "KEY=VAL"
        // eslint-disable-next-line no-useless-escape
        const keyValueArr = line.match(/^s*([w.-]+)s*=s*(.*)?s*$/);
        // matched?
        if (keyValueArr != null) {
          const key = keyValueArr[1];
          let value = keyValueArr[2] || "";
    
          // expand newlines in quoted values
          const len = value ? value.length : 0;
          if (len > 0 && value.charAt(0) === """ && value.charAt(len - 1) === """) {
            value = value.replace(/
/gm, "
");
          }
    
          // remove any surrounding quotes and extra spaces
          value = value.replace(/(^[""]|[""]$)/g, "").trim();
    
          res[key] = value;
        }
      });
      return res;
    }
    
    /*
     *定义多个服务器账号 及 根据 SERVER_ID 导出当前环境服务器账号
     */
    const SERVER_LIST = [
      {
        id: 0,
        name: "A-开发环境",
        domain: "",// 域名
        host: "192.168.66.66",// ip
        port: 22,// 端口
        username: "root", // 登录服务器的账号
        password: "Lsk19950726",// 登录服务器的账号
        path: "/home/wwwroot/default/Vue3.0"// 发布至静态服务器的项目路径
      },
      {
        id: 1, 
        name: "B-生产环境",
        domain: "",// 域名
        host: "192.168.66.66",// ip
        port: 22,// 端口
        username: "root", // 登录服务器的账号
        password: "Lsk19950726",// 登录服务器的账号
        path: "/home/wwwroot/default/Vue3.0/"// 发布至静态服务器的项目路径
      }
    ];
    
    module.exports = SERVER_LIST[SERVER_ID];
2、在配置文件package.json新增一键部署命令
   {
      "name": "one-key-upload",
      "version": "0.1.0",
      "private": true,
      "scripts": {
        "serve": "vue-cli-service serve",
        "build": "vue-cli-service build",
        //注意新增类容里面需要下载辅助插件
        "deploy:dev": " npm run build && cross-env NODE_ENV=dev node ./deploy",
        "deploy:prod": "npm run build && cross-env NODE_ENV=prod node ./deploy"
      },
      "dependencies": {
        "core-js": "^2.6.5",
        "vue": "^2.6.6",
        "vue-router": "^3.0.1",
        "vuex": "^3.0.1",
        "ora": "^3.4.0"
      },
      "devDependencies": {
        "@vue/cli-plugin-babel": "^3.5.0",
        "@vue/cli-service": "^3.5.0",
        "stylus": "^0.54.5",
        "stylus-loader": "^3.0.2",
        "vue-template-compiler": "^2.5.21",
        "cross-env": "^5.2.0",
        "scp2": "^0.5.0"
      }
    }
3、下载对应的安装包
    npm i -D cross-env scp2 ora 
4、安装完成后,配置服务器的账号密码地址
打开deploy/products.js
    /*
     *定义多个服务器账号 及 根据 SERVER_ID 导出当前环境服务器账号
     */
    const SERVER_LIST = [
      {
        id: 0,
        name: "A-开发环境",
        domain: "",// 域名
        host: "192.168.66.66",// 服务器ip  (我是本地虚拟机跑的)
        port: 22,// 端口
        username: "root", // 登录服务器的账号
        password: "root",// 登录服务器的账号
        path: "/home/wwwroot/default/Vue3.0"// 发布至静态服务器的项目路径
      },
      {
        id: 1, 
        name: "B-生产环境",
        domain: "",// 域名
        host: "192.168.66.66",// ip
        port: 22,// 端口
        username: "root", // 登录服务器的账号
        password: "root",// 登录服务器的账号
        path: "/home/wwwroot/default/Vue3.0/"// 发布至静态服务器的项目路径
      }
打开index.js 修改你需要上传的文件路径
    eg: scpClient.scp("上传的目录",  ...)   

5、都配置好了过后,运行一键压缩上传指令
    npm run deploy:prod 
    //这里我用的是生产环境,根据个人需要自行控制
一般没有报错就会提示你上传成功,直接刷新页面就可以生效了

要是这篇文章对您有帮助,就动动你的小手收藏一下!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/103474.html

相关文章

  • 用webpack4带你实现一个vue的打包项目

    摘要:一个用打包的的项目,参照的配置,一步一步带你实现一个的打包的项目,每一个对应一个步骤。如下注释模板生产环境的开启静态文件的压缩如果是的话需要打包完成显示包大小的状态分析运行或者就可以实现打包项目啦。 一个用webpack4打包的vue 的项目,参照vue-cli的webpack配置, 一步一步带你实现一个vue的打包的项目,每一个commit对应一个步骤。 github 地址 clon...

    verano 评论0 收藏0
  • ONE-sys 整合前后端脚手架 koa2 + pm2 + vue-cli3.0 + element

    摘要:项目地址干货求本脚手架主要致力于前端工程师的快速开发一键部署等快捷开发框架,主要目的是想让前端工程师在一个阿里云服务器上可以快速开发部署自己的项目。 项目地址https://github.com/fanshyiis/... 干货!求star showImg(https://segmentfault.com/img/remote/1460000017886870); 本脚手架主要致力于...

    刘福 评论0 收藏0
  • 手摸手,带你用vue撸后台 系列五(v4.0新版本)

    摘要:同时增加了单元测试,使用了,增加了可视化配置权限,增加了自定义布局等等,优化了原先的权限方案,支持不刷新页面更新路由等等功能。虽然它的初衷是为了单元测试的,但正好满足了我们的需求。它会重写浏览器的对象,从而才能拦截所有请求,代理到本地。 前言 vue-element-admin 从 2017.04.17提交第一个 commit 以来,维护至今已经有两年多的时间了了,发布了四十多个版本,...

    MonoLog 评论0 收藏0
  • 手摸手,带你用vue撸后台 系列五(v4.0新版本)

    摘要:同时增加了单元测试,使用了,增加了可视化配置权限,增加了自定义布局等等,优化了原先的权限方案,支持不刷新页面更新路由等等功能。虽然它的初衷是为了单元测试的,但正好满足了我们的需求。它会重写浏览器的对象,从而才能拦截所有请求,代理到本地。前言 vue-element-admin 从 2017.04.17提交第一个 commit 以来,维护至今已经有两年多的时间了了,发布了四十多个版本,收获了三...

    graf 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<