1. 代碼邏輯
1. 入口文件:bin-->deploy-->deploy.js
引入工具庫文件:
inquirer
child_process
ora
fs
path
request
miniprogram-ci
引入配置文件
./weixin
./config.json
1. 打包執(zhí)行命令:"deploy:mp-weixin": "node ./bin/deploy/deploy mp-weixin",
2. 執(zhí)行打包命令:npm run deploy:mp-weixin
3. 代碼走到./bin/deploy/deploy目錄下,在該腳本下可以拿到命令中的參數(shù)mp-weixin
4. 執(zhí)行腳本:
? ? 1.?命令控制臺:獲取版本、環(huán)境信息等: inquirer 獲取開發(fā)者打包要求
? ? 2.?獲取最后一次更新日志:execSync('git show -s --format=%s')
? ? 3.?打包:執(zhí)行打包命令exec(npm run build-${env}:${type}, {}, (err, stdout)=>{})
? ? 4.?上傳代碼到微信服務(wù)平臺:用miniprogram-ci 中upload執(zhí)行上傳
? ? 5.?發(fā)飛書提醒:
????獲取自定義機(jī)器人 webhook 地址: https://open.feishu.cn/document/client-docs/bot-v3/add-custom-bot
附:privateKey 獲取 公眾開放平臺,開發(fā)->開發(fā)管理->開發(fā)設(shè)置【生成之后一定要保存】
2.??依賴包
1. ora:
????優(yōu)雅的終端旋轉(zhuǎn)器
????http://www.npmdoc.org/orazhongwenwendangora-jszhongwenjiaochengjiexi.html
????用法
import ora from 'ora';
const spinner = ora('Loading unicorns').start();
setTimeout(() => {
? ? spinner.color = 'blue';
? ? spinner.text = 'Loading unicorns';
}, 1000);
2.? fs:
????讀取文件屏积、寫入文件、復(fù)制文件、刪除文件等罐氨。通過npm安裝Node.js后,可以直接在代碼中使用fs模塊來進(jìn)行文件系統(tǒng)的操作消恍。
3.? Path:
??文件路徑模塊: https://blog.csdn.net/COCOLI_BK/article/details/109182793
?4.? request:
????npm request 是一個流行的 Node.js 模塊岂昭,用于發(fā)起 HTTP 請求。它提供了簡潔的 API狠怨,使得在 Node.js 中發(fā)送 HTTP 請求變得非常方便约啊。
????使用 npm 安裝 request 模塊后,我們可以在代碼中引入它佣赖,并使用它提供的方法來發(fā)送 GET恰矩、POST、PUT憎蛤、DELETE 等類型的請求外傅。例如,我們可以使用 request.get() 方法發(fā)送 GET 請求俩檬,使用 request.post() 方法發(fā)送 POST 請求萎胰。
????request 模塊還提供了許多可選的參數(shù)和回調(diào)函數(shù),以便我們可以自定義請求的各個方面棚辽,例如設(shè)置請求頭技竟、發(fā)送請求體、處理響應(yīng)等屈藐。
????總之榔组,npm request 是一個非常實用的模塊,可以幫助我們在 Node.js 中輕松地發(fā)送 HTTP 請求联逻,并處理響應(yīng)數(shù)據(jù)搓扯。
?5. child_process
????child_process模塊是nodejs的一個子進(jìn)程模塊,可以用來創(chuàng)建一個子進(jìn)程包归,并執(zhí)行一些任務(wù)锨推。執(zhí)行一些什么任務(wù)呢?shell命令知道吧,有了child_process模塊爱态,就可以直接在js里面調(diào)用shell命令去完成一些非程诽埃酷炫的操作了!锦担!
舉個栗子俭识,GitHub、碼云等git代碼托管網(wǎng)站洞渔,都會有個webHook功能套媚,當(dāng)push了新的代碼后,服務(wù)器可以開辟一個接口去接受這個webHook的請求磁椒,并進(jìn)行g(shù)it pull堤瘤、npm run build等命令,從而達(dá)到自動化部署的目的浆熔!
????https://blog.csdn.net/qq1195566313/article/details/132797154
創(chuàng)建子進(jìn)程:Nodejs創(chuàng)建子進(jìn)程共有7個API Sync同步API 不加是異步API
spawn 執(zhí)行命令
exec執(zhí)行命令
execFile 執(zhí)行可執(zhí)行文件
fork 創(chuàng)建node子進(jìn)程
execSync執(zhí)行命令 同步執(zhí)行
execFileSync 執(zhí)行可執(zhí)行文件 同步執(zhí)行
spawnSync 執(zhí)行命令 同步執(zhí)行
6.? miniprogram-ci
miniprogram-ci 是從微信開發(fā)者工具中抽離的關(guān)于小程序/小游戲項目代碼的編譯模塊本辐。
使用前需要使用小程序管理員身份訪問"微信公眾平臺-開發(fā)-開發(fā)設(shè)置"后下載代碼上傳密鑰,并配置 IP 白名單医增,才能進(jìn)行上傳慎皱、預(yù)覽操作。