日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端自动化部署,基于scp2,ssh2

發布時間:2023/12/15 HTML 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端自动化部署,基于scp2,ssh2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前端自動化部署,基于scp2,ssh2

配置文件

deploy/products.js

/** @author: linzl* @method: * @param: * @Date: 2021-05-11 14:32:22* @return: */ /**讀取env環境變量*/const SERVER_ID = process.env.NODE_ENV === "prod" ? 0 : 1; /**定義多個服務器賬號 及 根據 SERVER_ID 導出當前環境服務器賬號* 使用的是ssh的密鑰*/const path = "C:\\Users\\{用戶名}\\.ssh\\id_rsa" let privateKey = require('fs').readFileSync(path).toString() const SERVER_LIST = [{id: 0,name: "A-測試環境",domain: "www.XXX.com",host: "101.200.181.XX",port: 108,username: "root",password: "",privateKey:privateKey,indexpath: "/XXXX/XXXX/smartBigScreen/",assetspath: "/XXXX/XXXX/smartBigScreen/assets"},{id: 1,name: "B-測試環境",domain: "www.XXX.com",host: "101.200.181.XX",port: 108,username: "root",password: "",privateKey: privateKey,indexpath: "/XXXX/XXXX/smartBigScreen/",assetspath: "/XXXX/XXXX/smartBigScreen/assets"}];module.exports = SERVER_LIST[SERVER_ID];

執行腳本文件

deploy/index.js

/** @author: linzl* @method: * @param: * @Date: 2021-05-11 14:32:44* @return: */ // deploy/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" ? "生產" : "測試") +"服務器..." );var Client = require("ssh2").Client; var config = {host: server.host,port: server.port,username: server.username,password: server.password,privateKey: server.privateKey, } var conn = new Client(); conn.on("ready", function() {console.log("enter");// rm 刪除dist文件,n 是換行 換行執行 重啟nginx命令 我這里是用docker重啟nginxconn.exec("rm -rf /XXXX/smartBigScreen/index.htmln rm -rf /XXXX/smartBigScreen/assets", function(err, stream) {if (err) throw err;stream.on("close", function(code, signal) {// 在執行shell命令后,把開始上傳部署項目代碼放到這里面spinner.start();scpClient.scp("dist/index.html",{...config,path: server.indexpath},function(err) {if (err) {console.log(chalk.red("發布失敗.n"));throw err;} else {scpClient.scp("dist/assets/",{...config,path: server.assetspath},function(err) {spinner.stop();if (err) {console.log(chalk.red("發布失敗.n"));throw err;} else {console.log(chalk.green("Success! 成功發布到" +(process.env.NODE_ENV === "prod"? "生產": "測試") +"服務器! n"));}});}});conn.end();}).on("data", function(data) {console.log("STDOUT: " + data);}).stderr.on("data", function(data) {console.log("STDERR: " + data);});});}).connect(config);

package.json

{"name": "smart-bigscreen-react","version": "0.0.0","scripts": {"dev": "vite","build:test": "tsc && vite build --mode staging","build": "tsc && vite build --mode production","serve": "vite preview","css": "node ./tool/index.js","deploy:dev": "npm run build:test && cross-env NODE_ENV=dev node ./deploy ", "deploy:prod": "npm run build && cross-env NODE_ENV=prod node ./deploy", "commit": "git-cz" },}

效果圖


總結

以上是生活随笔為你收集整理的前端自动化部署,基于scp2,ssh2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。