成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用fjpublish發(fā)布前端項(xiàng)目(基礎(chǔ)篇)

anonymoussf / 1248人閱讀

摘要:任務(wù)描述使用的來發(fā)布多個(gè)目錄使用的忽略所有結(jié)尾的文件。任務(wù)描述使用的配置項(xiàng)在項(xiàng)目發(fā)布后重啟進(jìn)程忽略當(dāng)次構(gòu)建過程并提交一次使用的配置項(xiàng)設(shè)置每個(gè)遠(yuǎn)程命令超時(shí)時(shí)間為秒。下一期地址使用發(fā)布前端項(xiàng)目安全篇官方交流群

本系列文章共分為基礎(chǔ)篇,安全篇,拓展篇。

前言

曾幾何時(shí),我相信部分Web Developer(包括我)使用的項(xiàng)目發(fā)布方式比較傳統(tǒng)(使用xftp或者sublime text的插件sftp等),發(fā)布方式簡單又粗暴,想發(fā)布哪個(gè)目錄就直接上傳覆蓋...

但是這種方式對于現(xiàn)在的前端項(xiàng)目有些弊端:

若項(xiàng)目包含webpackgulp等構(gòu)建工具,則每次發(fā)布都需要等待構(gòu)建完成后再手動(dòng)上傳,效率低;

若項(xiàng)目為前端的服務(wù)端渲染項(xiàng)目,例如vue的服務(wù)端渲染,那么項(xiàng)目上傳服務(wù)器后還得登錄服務(wù)器重啟進(jìn)程;

發(fā)布時(shí)由于選錯(cuò)文件或者選錯(cuò)發(fā)布環(huán)境導(dǎo)致的上傳(>﹏<)悲劇,可沒有后悔藥吃。

我知道你想告訴我還可以使用git webhook等自動(dòng)化工具,的確這是一種比較高級(jí)的用法,也非常可靠,但是搭建過程對于新手還是比較麻煩的,而且前端還是不太同于服務(wù)端,前端項(xiàng)目大多需要構(gòu)建,那么構(gòu)建過程究竟放在服務(wù)端還是本地,這是一個(gè)問題。

我理想中的發(fā)布器應(yīng)該是易于搭建,通過配置文件就能選擇發(fā)布到不同的環(huán)境,敲完一行發(fā)布命令就可以去泡杯茶,讓它自己完成整個(gè)發(fā)布流程。

于是,fjpublish就誕生了。它是一個(gè)不同于git webhook的發(fā)布思路,基于nodejs的能力自動(dòng)化整個(gè)發(fā)布流程,順便把git提交一下...

安裝

如果你已經(jīng)安裝了nodejs (6.0+),那么只需要一個(gè)命令就能完成fjpublish的安裝

npm install fjpublish -g

全局安裝就可以在任意路徑下使用fjpublish這個(gè)命令了。
注意: fjpublish依賴一份配置文件,默認(rèn)是fjpublish.config.js,如果不想在版本庫中提交服務(wù)器安全信息,請千萬記得把它加入忽略文件中,如.gitignore

配置文件結(jié)構(gòu)

fjpublish命令行默認(rèn)會(huì)讀取當(dāng)前工作目錄下的fjpublish.config.js文件,該文件返回一個(gè)對象,結(jié)構(gòu)如下:

module.exports = {
    //modules開始
    modules: [{
        name: "測試環(huán)境", //標(biāo)識(shí)要發(fā)布的環(huán)境描述
        env: "test", //發(fā)布環(huán)境的唯一標(biāo)識(shí)
        ssh: {
            host: "12.23.345.678", //遠(yuǎn)程服務(wù)器ip
            username: "root", //登錄服務(wù)器的用戶名
            //rc版本的user選項(xiàng)和userName選項(xiàng)請?jiān)谖磥斫y(tǒng)一配置為username
            password: "12345678", //登錄服務(wù)器的密碼
        },
        buildCommand: "build", //要進(jìn)行構(gòu)建的命令build => npm run build
        localPath: "example", //項(xiàng)目中要發(fā)布的目錄
        remotePath: "/www/example", //項(xiàng)目中要發(fā)布到遠(yuǎn)程服務(wù)器的目錄
        tag: "123" //標(biāo)注發(fā)布的版本,可不設(shè)置
    }, { ... }],
    //modules結(jié)束
    nobuild: true, //modules外的字段可用于每一個(gè)module繼承,這里僅用于舉例
    tag: "v1", //modules外的字段可用于每一個(gè)module繼承,這里僅用于舉例
}

以上展示了一個(gè)簡單的配置,關(guān)于使用fjpublish和閱讀本文檔,還需明白以下幾個(gè)概念:

modules數(shù)組中每一個(gè)對象(也稱module)代表一個(gè)發(fā)布環(huán)境,在本文檔中module指在配置文件中任意一個(gè)環(huán)境配置module

在本文檔中config指代module.exports輸出的所有字段(包含modules在內(nèi))的對象。

config中modules字段外的字段在初始后將并入每一個(gè)module,優(yōu)先級(jí)為module > config,也可以理解為module繼承自config

config中modules字段外的字段不僅僅為了繼承給module實(shí)例也可以是為了定義某些全局的配置字段。

聽起來好像一頭霧水,建議看完例子再重新理解以上內(nèi)容

例子

讓我們閑話少說,先上幾個(gè)例子來了解fjpublish能做什么。

1. 簡單例子

發(fā)布一個(gè)項(xiàng)目文件到遠(yuǎn)程環(huán)境,并備份舊文件。

任務(wù)描述

以提示器的方式選擇發(fā)布到測試環(huán)境

配置文件
// 項(xiàng)目根目錄下fjpublish.config.js
module.exports = {
    modules: [{
        name: "測試環(huán)境",
        env: "test",
        ssh: {
            host: "192.168.0.xxx",
            username: "root", //登錄服務(wù)器的用戶名
            //rc版本的user選項(xiàng)和userName選項(xiàng)請?jiān)谖磥斫y(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)境’
    }]
}
// 項(xiàng)目根目錄下package.json
// 用于使用構(gòu)建命令npm run webpack來調(diào)用webpack
...
"scripts": {
    "webpack": "webpack --config example/webpack/build/build.js"
},
...
發(fā)布命令
fjpublish env -s
動(dòng)態(tài)圖


簡單例子

更多內(nèi)容

可以使用命令fjpublish env --diff開啟差異化發(fā)布,每次發(fā)布只上傳有改動(dòng)的文件,極大的縮短上傳時(shí)間。

對于不需要構(gòu)建的項(xiàng)目,不需要準(zhǔn)備package.json,并在配置文件中設(shè)置nobuild選項(xiàng);

nobuild: true

對于某次發(fā)布臨時(shí)不需要構(gòu)建的,請?jiān)诿钪惺褂?b>--nobuild選項(xiàng)

fjpublish env  --nobuild
2. 多目錄發(fā)布

有些時(shí)候我們的項(xiàng)目需要發(fā)布的文件夾不止一個(gè),或者需要忽略某些文件,那么就需要調(diào)整發(fā)布方式。

任務(wù)描述

使用modulelocalPathEntries來發(fā)布多個(gè)目錄;

使用modulelocalPathIgnore忽略所有txt結(jié)尾的文件。

項(xiàng)目文件結(jié)構(gòu)

配置文件
// 項(xiàng)目根目錄下fjpublish.config.js
module.exports = {
    modules: [{
        name: "測試環(huán)境",
        env: "test",
        ssh: {
            host: "192.168.0.xxx",
            username: "root", //登錄服務(wù)器的用戶名
            //rc版本的user選項(xiàng)和userName選項(xiàng)請?jiān)谖磥斫y(tǒng)一配置為username
            password: "xxxxx",
        },
        buildCommand: "webpack",
        localPathEntries: ["example", "lib"],
        localPathIgnore: "**/*.txt",
        remotePath: "/www/manman/multiple",
    }],
}
發(fā)布命令
fjpublish env test
動(dòng)態(tài)圖


多目錄發(fā)布

更多

如果把配置改一下,那么發(fā)布的項(xiàng)目結(jié)構(gòu)將完全不同,那么聰明的你猜猜修改上文配置的localPathlocalPathEntries會(huì)發(fā)生什么吧;

...
localPath: "example/webpack", //當(dāng)localPathEntries存在時(shí)localPath可不填,不填意味著項(xiàng)目根目錄
localPathEntries: ["build", "dist"],
...

若項(xiàng)目為多目錄發(fā)布,則遠(yuǎn)程目錄的備份規(guī)則也將變?yōu)橐赃@些子目錄為備份源。

3. 遠(yuǎn)程后置命令

對于需要重啟服務(wù)的項(xiàng)目,fjpublish也是支持的。

任務(wù)描述

使用module的配置項(xiàng)postCommands在項(xiàng)目發(fā)布后重啟pm2進(jìn)程;

忽略當(dāng)次構(gòu)建過程并提交一次git;

使用module的配置項(xiàng)ssh2shell設(shè)置每個(gè)遠(yuǎn)程命令超時(shí)時(shí)間為20秒。

配置文件
// 項(xiàng)目根目錄下fjpublish.config.js
module.exports = {
    modules: [{
        name: "測試環(huán)境",
        env: "test",
        ssh: {
            host: "192.168.0.xxx",
            username: "root", //登錄服務(wù)器的用戶名
            //rc版本的user選項(xiàng)和userName選項(xiàng)請?jiān)谖磥斫y(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)程后置命令"
動(dòng)態(tài)圖


遠(yuǎn)程后置命令

4.快速還原

有備份項(xiàng)目的功能那當(dāng)然得有還原的辦法啦。

任務(wù)描述

還原版本預(yù)發(fā)布環(huán)境至tag標(biāo)記為‘自定義tag的版本’的版本;

配置文件
// 項(xiàng)目根目錄下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
動(dòng)態(tài)圖


快速還原

更多

可以使用命令fjpublish recover pre_release -p, --previous 快速還原至上個(gè)版本而不需要選擇;

可以使用選項(xiàng)recoverTemplate自定義版本列表模板;

快速還原一樣也會(huì)執(zhí)行postCommands配置的后置命令。

結(jié)語

以上的例子描述了fjpublish中最基本的功能,fjpublish也有強(qiáng)大拓展能力,感興趣的童鞋可以直接移步官方文檔了解更多,別忘了在github上給我點(diǎn)個(gè)star哦。

下一期我們將談?wù)撊绾问褂胒jpublish進(jìn)行安全發(fā)布,拜拜∩__∩y。
下一期地址:使用fjpublish發(fā)布前端項(xiàng)目(安全篇)

fjpublish官方交流群:608809145

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/89391.html

相關(guān)文章

  • 使用fjpublish發(fā)布前端項(xiàng)目(安全

    摘要:本系列文章共分為基礎(chǔ)篇,安全篇,拓展篇。免密發(fā)布安全等級(jí)配置文件中的選項(xiàng)完全就是庫的選項(xiàng),那么熟悉登錄服務(wù)器的同學(xué)應(yīng)該知道可以免密登錄服務(wù)器。不過較真來說,這對于的開發(fā)者及依賴庫的開發(fā)者而言私鑰文件還是可以讀取到的,不能算絕對安全。 本系列文章共分為基礎(chǔ)篇,安全篇,拓展篇。如果還不了解fjpublish或者不知本文所云的童鞋請先花個(gè)5分鐘看看基礎(chǔ)篇:使用fjpublish發(fā)布前端項(xiàng)目(...

    HitenDev 評(píng)論0 收藏0
  • fjpublish: 使用命令行發(fā)布你的項(xiàng)目

    摘要:簡介是一款通過配置文件就能完成發(fā)布項(xiàng)目到各個(gè)環(huán)境的命令行工具,意在創(chuàng)建可靠舒適的發(fā)布項(xiàng)目體驗(yàn),同時(shí)它也有豐富的和完善的可拓展能力,讓開發(fā)者輕松定制項(xiàng)目發(fā)布流程。 fjpublish簡介 fjpublish是一款通過配置文件就能完成發(fā)布項(xiàng)目到各個(gè)環(huán)境的命令行工具,意在創(chuàng)建可靠舒適的發(fā)布項(xiàng)目體驗(yàn),同時(shí)它也有豐富的API和完善的可拓展能力,讓開發(fā)者輕松定制項(xiàng)目發(fā)布流程。 前言 曾幾何時(shí),我相...

    Michael_Lin 評(píng)論0 收藏0
  • 前端每周清單半年盤點(diǎn)之 Angular

    摘要:延伸閱讀學(xué)習(xí)與實(shí)踐資料索引與前端工程化實(shí)踐前端每周清單半年盤點(diǎn)之篇前端每周清單半年盤點(diǎn)之與篇前端每周清單半年盤點(diǎn)之篇 前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點(diǎn);分為新聞熱點(diǎn)、開發(fā)教程、工程實(shí)踐、深度閱讀、開源項(xiàng)目、巔峰人生等欄目。歡迎關(guān)注【前端之巔】微信公眾號(hào)(ID:frontshow),及時(shí)獲取前端每周清單;本文則是對于半年來發(fā)布的前端每周清單...

    LeviDing 評(píng)論0 收藏0
  • 前端每周清單半年盤點(diǎn)之 Node.js

    摘要:前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點(diǎn)分為新聞熱點(diǎn)開發(fā)教程工程實(shí)踐深度閱讀開源項(xiàng)目巔峰人生等欄目。對該漏洞的綜合評(píng)級(jí)為高危。目前,相關(guān)利用方式已經(jīng)在互聯(lián)網(wǎng)上公開,近期出現(xiàn)攻擊嘗試爆發(fā)的可能。 前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點(diǎn);分為新聞熱點(diǎn)、開發(fā)教程、工程實(shí)踐、深度閱讀、開源項(xiàng)目、巔峰人生等欄目。歡...

    kid143 評(píng)論0 收藏0
  • 前端每周清單第 56 期: D3 5.0,深入 React 事件系統(tǒng),SketchCode 界面生成

    摘要:雅虎從很早就開始招聘和培養(yǎng)研究型人才,雅虎研究院就是在這個(gè)過程中應(yīng)運(yùn)而生的。今天我就來說一說雅虎研究院的歷史,以及過去十多年間取得的成就,聊一聊如何通過引進(jìn)高級(jí)人才,迅速構(gòu)建起一支世界級(jí)的研發(fā)團(tuán)隊(duì)。 showImg(https://segmentfault.com/img/remote/1460000013995512); 作者:王下邀月熊 編輯:徐川 前端每周清單專注大前端領(lǐng)域內(nèi)容,...

    lavnFan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<