亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

前端dist文件實現半自動化部署

2024-03-29 09:25:26
46
0

用腳本實現連接服務器進行文件傳輸過程,保證打包后能夠運行腳本自動化上傳文件,打包部署命令為:npm run build:deploy

腳本實現原理:

利用node中ssh進行文件傳輸,前提是需要連通服務器以及服務器開啟ssh。 腳本實現過程分兩步:

  1. 連接遠程服務器,并修改服務器dist文件名稱
// 安裝node-ssh包
const { NodeSSH } = require('node-ssh')

async function main() {
    const ssh = new NodeSSH()
    // 獲取當前日期
    const currentDate = new Date().toISOString().split('T')[0]
    // 新dist文件名
    const newDistName = `dist-${currentDate}`
    // 舊dist文件名
    const oldDistName = 'dist'
    
    try {
        // 連接遠程服務器
        await ssh.connect({
            host: 'xxx.xxx.xxx.xxx',
            username: '用戶名',
            password: '密碼'
        })
        // 判斷服務器dist文件是否存在
        let i = 1
        let newDistExists = await ssh.execCommand(`ls /nginx/${newDistName}-${i}`)
        while(newDistExists.code === 0) {
            i ++
            newDistExits = await ssh.execCommand(`ls /nginx/${newDistName}-${i}`)
        }
        // 重命名舊的dist文件
        await ssh.execCommand(`mv /nginx/${oldDistName} /nginx/${newDistName}-${i}`)
        console.log('遠程服務器操作成功!')
    } catch(error) {
        console.error('遠程服務器操作失敗:', error)
        ssh.dispose()
        return
    }
}
  1. 上傳新dist文件
try {
    // 上傳dist目錄到nginx服務器
    await ssh.putDirectory(oldDistName, '/nginx/dist/', {
        recursive: true,
        concurrency: 10,
        tick(localPath, remotePath, error) {
            if(error) {
                console.log(`無法上傳${localPath}到${remotePath}: ${error}`)
            } else {
                console.log(`${localPath}上傳至${remotePath}`)
            }
        }
    })
    console.log('dist目錄上傳成功!')
} catch(error) {
    console.error('上傳dist目錄失敗:', error)
}
// 斷開ssh連接
ssh.dispose()

main()

由于通過ssh.connect連接服務器,可能存在安全風險,此種方式安全性有待考證!

其中服務器信息采用password-prompt插件,將用戶名密碼采用terminal終端窗口輸入,同時不保存輸入記錄

const passwordPrompt = require('password-prompt')
const getUsernameAndPassword = async() => {
    const username = await passwordPrompt('Enter your username:')
    const password = await passwordPrompt('Enter your password:', { method: 'hide' })
    return { username, password }
}

將輸入的username、password輸入到遠程服務器即可

0條評論
0 / 1000
w****n
17文章數
1粉絲數
w****n
17 文章 | 1 粉絲
原創

前端dist文件實現半自動化部署

2024-03-29 09:25:26
46
0

用腳本實現連接服務器進行文件傳輸過程,保證打包后能夠運行腳本自動化上傳文件,打包部署命令為:npm run build:deploy

腳本實現原理:

利用node中ssh進行文件傳輸,前提是需要連通服務器以及服務器開啟ssh。 腳本實現過程分兩步:

  1. 連接遠程服務器,并修改服務器dist文件名稱
// 安裝node-ssh包
const { NodeSSH } = require('node-ssh')

async function main() {
    const ssh = new NodeSSH()
    // 獲取當前日期
    const currentDate = new Date().toISOString().split('T')[0]
    // 新dist文件名
    const newDistName = `dist-${currentDate}`
    // 舊dist文件名
    const oldDistName = 'dist'
    
    try {
        // 連接遠程服務器
        await ssh.connect({
            host: 'xxx.xxx.xxx.xxx',
            username: '用戶名',
            password: '密碼'
        })
        // 判斷服務器dist文件是否存在
        let i = 1
        let newDistExists = await ssh.execCommand(`ls /nginx/${newDistName}-${i}`)
        while(newDistExists.code === 0) {
            i ++
            newDistExits = await ssh.execCommand(`ls /nginx/${newDistName}-${i}`)
        }
        // 重命名舊的dist文件
        await ssh.execCommand(`mv /nginx/${oldDistName} /nginx/${newDistName}-${i}`)
        console.log('遠程服務器操作成功!')
    } catch(error) {
        console.error('遠程服務器操作失敗:', error)
        ssh.dispose()
        return
    }
}
  1. 上傳新dist文件
try {
    // 上傳dist目錄到nginx服務器
    await ssh.putDirectory(oldDistName, '/nginx/dist/', {
        recursive: true,
        concurrency: 10,
        tick(localPath, remotePath, error) {
            if(error) {
                console.log(`無法上傳${localPath}到${remotePath}: ${error}`)
            } else {
                console.log(`${localPath}上傳至${remotePath}`)
            }
        }
    })
    console.log('dist目錄上傳成功!')
} catch(error) {
    console.error('上傳dist目錄失敗:', error)
}
// 斷開ssh連接
ssh.dispose()

main()

由于通過ssh.connect連接服務器,可能存在安全風險,此種方式安全性有待考證!

其中服務器信息采用password-prompt插件,將用戶名密碼采用terminal終端窗口輸入,同時不保存輸入記錄

const passwordPrompt = require('password-prompt')
const getUsernameAndPassword = async() => {
    const username = await passwordPrompt('Enter your username:')
    const password = await passwordPrompt('Enter your password:', { method: 'hide' })
    return { username, password }
}

將輸入的username、password輸入到遠程服務器即可

文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0