前端打包后的文件上傳到服務器


前言

  好久沒寫文章了,一直在忙,剛好今天有點時間,就想寫點東西。廢話不多說,直接進入正文吧。

准備工作

  需要用到scp2,這是基於ssh2實現的ftp上傳工具。npm安裝到開發依賴即可,也可全局安裝。

npm install -D scp2

具體文檔 https://www.npmjs.com/package/scp2

本人的是angular項目開發的,其他框架也都一樣。項目根目錄新建文件publish.test.js,

 

代碼如下:

"use strict"
const client = require('scp2');
const ssh2Cliend = require('ssh2').Client;
const conn = new ssh2Cliend();
const ora = require('ora');
const chalk = require('chalk');
const spinner = ora(chalk.green('正在發布到本地虛擬機服務器……'));

// 服務器配置
const serveConfig = {
    host: 'ip/域名',
    port: '22',  //端口默認22
    username: 'root',
    password: 'password',
    path: '/mydir/website/'
};
async function backup() {
    conn.exec(`mv -fu ${serveConfig.path} ${serveConfig.path}.backup`, (e, mv) => {
        mv.on('close', async() => {
            // tslint:disable-next-line:no-console
            console.log('備份完成……');
            // 開始上傳
            await upload();
            conn.end();
        })
    })
}
async function upload() {
    spinner.start();
    client.scp('./dist/master/', {
        host: serveConfig.host,
        port: serveConfig.port,
        username: serveConfig.username,
        password: serveConfig.password,
        path: serveConfig.path
    }, fail => {
        spinner.stop();
        if (!fail) {
            // tslint:disable-next-line:no-console
            console.log('項目發布完成!');
        } else {
            // tslint:disable-next-line:no-console
            console.log('fail:', fail);
        }
    });
}
conn.on('ready', async() => {
    // 先備份原文件
    await backup();

}).connect({
    host: serveConfig.host,
    port: serveConfig.port,
    username: serveConfig.username,
    password: serveConfig.password
});

package.json配置命令:

 

 配置完成,運行 npm run publish:test,即可打包,發布到測試服務器。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM