摘要:任務(wù)描述使用的來發(fā)布多個目錄使用的忽略所有結(jié)尾的文件。任務(wù)描述使用的配置項在項目發(fā)布后重啟進(jìn)程忽略當(dāng)次構(gòu)建過程并提交一次使用的配置項設(shè)置每個遠(yuǎn)程命令超時時間為秒。下一期地址使用發(fā)布前端項目安全篇官方交流群
前言本系列文章共分為基礎(chǔ)篇,安全篇,拓展篇。
曾幾何時,我相信部分Web Developer(包括我)使用的項目發(fā)布方式比較傳統(tǒng)(使用xftp或者sublime text的插件sftp等),發(fā)布方式簡單又粗暴,想發(fā)布哪個目錄就直接上傳覆蓋...
但是這種方式對于現(xiàn)在的前端項目有些弊端:
若項目包含webpackgulp等構(gòu)建工具,則每次發(fā)布都需要等待構(gòu)建完成后再手動上傳,效率低;
若項目為前端的服務(wù)端渲染項目,例如vue的服務(wù)端渲染,那么項目上傳服務(wù)器后還得登錄服務(wù)器重啟進(jìn)程;
發(fā)布時由于選錯文件或者選錯發(fā)布環(huán)境導(dǎo)致的上傳(>﹏<)悲劇,可沒有后悔藥吃。
我知道你想告訴我還可以使用git webhook等自動化工具,的確這是一種比較高級的用法,也非??煽?,但是搭建過程對于新手還是比較麻煩的,而且前端還是不太同于服務(wù)端,前端項目大多需要構(gòu)建,那么構(gòu)建過程究竟放在服務(wù)端還是本地,這是一個問題。
我理想中的發(fā)布器應(yīng)該是易于搭建,通過配置文件就能選擇發(fā)布到不同的環(huán)境,敲完一行發(fā)布命令就可以去泡杯茶,讓它自己完成整個發(fā)布流程。
于是,fjpublish就誕生了。它是一個不同于git webhook的發(fā)布思路,基于nodejs的能力自動化整個發(fā)布流程,順便把git提交一下...
安裝如果你已經(jīng)安裝了nodejs (6.0+),那么只需要一個命令就能完成fjpublish的安裝
npm install fjpublish -g
全局安裝就可以在任意路徑下使用fjpublish這個命令了。
注意: fjpublish依賴一份配置文件,默認(rèn)是fjpublish.config.js,如果不想在版本庫中提交服務(wù)器安全信息,請千萬記得把它加入忽略文件中,如.gitignore
fjpublish命令行默認(rèn)會讀取當(dāng)前工作目錄下的fjpublish.config.js文件,該文件返回一個對象,結(jié)構(gòu)如下:
module.exports = { //modules開始 modules: [{ name: "測試環(huán)境", //標(biāo)識要發(fā)布的環(huán)境描述 env: "test", //發(fā)布環(huán)境的唯一標(biāo)識 ssh: { host: "12.23.345.678", //遠(yuǎn)程服務(wù)器ip username: "root", //登錄服務(wù)器的用戶名 //rc版本的user選項和userName選項請在未來統(tǒng)一配置為username password: "12345678", //登錄服務(wù)器的密碼 }, buildCommand: "build", //要進(jìn)行構(gòu)建的命令build => npm run build localPath: "example", //項目中要發(fā)布的目錄 remotePath: "/www/example", //項目中要發(fā)布到遠(yuǎn)程服務(wù)器的目錄 tag: "123" //標(biāo)注發(fā)布的版本,可不設(shè)置 }, { ... }], //modules結(jié)束 nobuild: true, //modules外的字段可用于每一個module繼承,這里僅用于舉例 tag: "v1", //modules外的字段可用于每一個module繼承,這里僅用于舉例 }
以上展示了一個簡單的配置,關(guān)于使用fjpublish和閱讀本文檔,還需明白以下幾個概念:
modules數(shù)組中每一個對象(也稱module)代表一個發(fā)布環(huán)境,在本文檔中module指在配置文件中任意一個環(huán)境配置module
在本文檔中config指代module.exports輸出的所有字段(包含modules在內(nèi))的對象。
config中modules字段外的字段在初始后將并入每一個module,優(yōu)先級為module > config,也可以理解為module繼承自config。
config中modules字段外的字段不僅僅為了繼承給module實例也可以是為了定義某些全局的配置字段。
聽起來好像一頭霧水,建議看完例子再重新理解以上內(nèi)容
例子讓我們閑話少說,先上幾個例子來了解fjpublish能做什么。
1. 簡單例子發(fā)布一個項目文件到遠(yuǎn)程環(huán)境,并備份舊文件。
任務(wù)描述以提示器的方式選擇發(fā)布到測試環(huán)境
配置文件// 項目根目錄下fjpublish.config.js module.exports = { modules: [{ name: "測試環(huán)境", env: "test", ssh: { host: "192.168.0.xxx", username: "root", //登錄服務(wù)器的用戶名 //rc版本的user選項和userName選項請在未來統(tǒng)一配置為username password: "xxxxxx", }, buildCommand: "webpack", localPath: "example", remotePath: "/www/manman/test", },{ name: "預(yù)發(fā)布環(huán)境", env: "pre_release", //剩余配置參考‘測試環(huán)境’ },{ name: "正式環(huán)境", env: "pre_release", //剩余配置參考‘測試環(huán)境’ }] }
// 項目根目錄下package.json // 用于使用構(gòu)建命令npm run webpack來調(diào)用webpack ... "scripts": { "webpack": "webpack --config example/webpack/build/build.js" }, ...發(fā)布命令
fjpublish env -s動態(tài)圖
可以使用命令fjpublish env
對于不需要構(gòu)建的項目,不需要準(zhǔn)備package.json,并在配置文件中設(shè)置nobuild選項;
nobuild: true
對于某次發(fā)布臨時不需要構(gòu)建的,請在命令中使用--nobuild選項
fjpublish env2. 多目錄發(fā)布--nobuild
有些時候我們的項目需要發(fā)布的文件夾不止一個,或者需要忽略某些文件,那么就需要調(diào)整發(fā)布方式。
任務(wù)描述使用module的localPathEntries來發(fā)布多個目錄;
使用module的localPathIgnore忽略所有txt結(jié)尾的文件。
項目文件結(jié)構(gòu) 配置文件// 項目根目錄下fjpublish.config.js module.exports = { modules: [{ name: "測試環(huán)境", env: "test", ssh: { host: "192.168.0.xxx", username: "root", //登錄服務(wù)器的用戶名 //rc版本的user選項和userName選項請在未來統(tǒng)一配置為username password: "xxxxx", }, buildCommand: "webpack", localPathEntries: ["example", "lib"], localPathIgnore: "**/*.txt", remotePath: "/www/manman/multiple", }], }發(fā)布命令
fjpublish env test動態(tài)圖
如果把配置改一下,那么發(fā)布的項目結(jié)構(gòu)將完全不同,那么聰明的你猜猜修改上文配置的localPath和localPathEntries會發(fā)生什么吧;
... localPath: "example/webpack", //當(dāng)localPathEntries存在時localPath可不填,不填意味著項目根目錄 localPathEntries: ["build", "dist"], ...
若項目為多目錄發(fā)布,則遠(yuǎn)程目錄的備份規(guī)則也將變?yōu)橐赃@些子目錄為備份源。
3. 遠(yuǎn)程后置命令對于需要重啟服務(wù)的項目,fjpublish也是支持的。
任務(wù)描述使用module的配置項postCommands在項目發(fā)布后重啟pm2進(jìn)程;
忽略當(dāng)次構(gòu)建過程并提交一次git;
使用module的配置項ssh2shell設(shè)置每個遠(yuǎn)程命令超時時間為20秒。
配置文件// 項目根目錄下fjpublish.config.js module.exports = { modules: [{ name: "測試環(huán)境", env: "test", ssh: { host: "192.168.0.xxx", username: "root", //登錄服務(wù)器的用戶名 //rc版本的user選項和userName選項請在未來統(tǒng)一配置為username password: "xxxxxx", }, ssh2shell: { idleTimeOut: 20000 }, postCommands: ["pm2 reload xxx"], buildCommand: "build", localPath: "example", remotePath: "/www/manman/test", }] }發(fā)布命令
fjpublish env test --nobuild --commit "遠(yuǎn)程后置命令"動態(tài)圖
有備份項目的功能那當(dāng)然得有還原的辦法啦。
任務(wù)描述還原版本預(yù)發(fā)布環(huán)境至tag標(biāo)記為‘自定義tag的版本’的版本;
配置文件// 項目根目錄下fjpublish.config.js module.exports = { modules: [{ name: "預(yù)發(fā)布環(huán)境", env: "pre_release", ssh: { //略 }, localPath: "example", remotePath: "/www/zhangchao/pre_release", }], }還原命令
fjpublish recover pre_release動態(tài)圖
可以使用命令fjpublish recover pre_release -p, --previous 快速還原至上個版本而不需要選擇;
可以使用選項recoverTemplate自定義版本列表模板;
快速還原一樣也會執(zhí)行postCommands配置的后置命令。
結(jié)語以上的例子描述了fjpublish中最基本的功能,fjpublish也有強(qiáng)大拓展能力,感興趣的童鞋可以直接移步官方文檔了解更多,別忘了在github上給我點個star哦。
下一期我們將談?wù)撊绾问褂胒jpublish進(jìn)行安全發(fā)布,拜拜∩__∩y。
下一期地址:使用fjpublish發(fā)布前端項目(安全篇)
fjpublish官方交流群:608809145
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/89391.html
摘要:本系列文章共分為基礎(chǔ)篇,安全篇,拓展篇。免密發(fā)布安全等級配置文件中的選項完全就是庫的選項,那么熟悉登錄服務(wù)器的同學(xué)應(yīng)該知道可以免密登錄服務(wù)器。不過較真來說,這對于的開發(fā)者及依賴庫的開發(fā)者而言私鑰文件還是可以讀取到的,不能算絕對安全。 本系列文章共分為基礎(chǔ)篇,安全篇,拓展篇。如果還不了解fjpublish或者不知本文所云的童鞋請先花個5分鐘看看基礎(chǔ)篇:使用fjpublish發(fā)布前端項目(...
摘要:簡介是一款通過配置文件就能完成發(fā)布項目到各個環(huán)境的命令行工具,意在創(chuàng)建可靠舒適的發(fā)布項目體驗,同時它也有豐富的和完善的可拓展能力,讓開發(fā)者輕松定制項目發(fā)布流程。 fjpublish簡介 fjpublish是一款通過配置文件就能完成發(fā)布項目到各個環(huán)境的命令行工具,意在創(chuàng)建可靠舒適的發(fā)布項目體驗,同時它也有豐富的API和完善的可拓展能力,讓開發(fā)者輕松定制項目發(fā)布流程。 前言 曾幾何時,我相...
摘要:延伸閱讀學(xué)習(xí)與實踐資料索引與前端工程化實踐前端每周清單半年盤點之篇前端每周清單半年盤點之與篇前端每周清單半年盤點之篇 前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點;分為新聞熱點、開發(fā)教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡迎關(guān)注【前端之巔】微信公眾號(ID:frontshow),及時獲取前端每周清單;本文則是對于半年來發(fā)布的前端每周清單...
摘要:前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點分為新聞熱點開發(fā)教程工程實踐深度閱讀開源項目巔峰人生等欄目。對該漏洞的綜合評級為高危。目前,相關(guān)利用方式已經(jīng)在互聯(lián)網(wǎng)上公開,近期出現(xiàn)攻擊嘗試爆發(fā)的可能。 前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點;分為新聞熱點、開發(fā)教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡...
摘要:雅虎從很早就開始招聘和培養(yǎng)研究型人才,雅虎研究院就是在這個過程中應(yīng)運(yùn)而生的。今天我就來說一說雅虎研究院的歷史,以及過去十多年間取得的成就,聊一聊如何通過引進(jìn)高級人才,迅速構(gòu)建起一支世界級的研發(fā)團(tuán)隊。 showImg(https://segmentfault.com/img/remote/1460000013995512); 作者:王下邀月熊 編輯:徐川 前端每周清單專注大前端領(lǐng)域內(nèi)容,...
閱讀 1121·2023-04-25 14:45
閱讀 2896·2021-09-30 09:59
閱讀 3195·2021-09-22 15:48
閱讀 2490·2019-08-30 15:55
閱讀 3589·2019-08-30 15:44
閱讀 625·2019-08-29 14:07
閱讀 3480·2019-08-26 13:45
閱讀 586·2019-08-26 11:31