寫之前沒看到這個外掛的開發者已經在掘進上發了文章,我這個沒看懂或者需要更深入的檢視的,可以去他的頁面或者去官網看文件。
使用nodejs改進發布流程(上)
警告
被玩壞了,好了,下面linux上刪除檔案的命令我刪除了,我會加上這個工具開發者加的那個安全刪除,要不大家要是執行以下rm -rf *
或者斜槓多個空格,估計下面警告都不用看了。
配置好的檔案不要用程式碼託管,因為配置檔案裡有你伺服器的資訊,丟了老大殺了你怎麼辦,我也很為難啊。
如何讓git或者svn忽略它們你自己查。
如果本文章讓你感到懵逼,可以去官網看看,我只是在官網文件找了一些我需要的配置。
首先全域性安裝fjpublish
npm i fjpublish -g
//或者
yarn global add fjpulish複製程式碼
然後把下面的配置檔案放到專案根目錄,檔名fjpublish.config.js
module.exports = {
//modules開始 裡面可以配置多個環境,比如測試環境,預釋出環境,和正式環境,當然,也可以配置一個
modules: [{ // 以下內容為假資料,到時候改成真實伺服器地址,
name: '測試環境', // 設定釋出環境的名稱易於辨識,就是起個名字
env: 'test', // 釋出環境的唯一識別符號
ssh: { // 伺服器的ssh配置,不知道的自己問運維大哥
host: '0.0.0.0',
port: 22,
user: 'root',
userName: 'root',
password: 'password',
},
buildCommand: 'build', //這個意思是執行的時候可以自動構建,這個必須放你構建時候的程式碼,我這裡構建用的是npm run build,所以寫build
localPath: 'dist', // 要釋出的資料夾的根目錄,建議用相對路徑,如果當前不存在,build後產生的資料夾,也要寫這個不存在的資料夾名
remotePath: '/data/d5-meal', // 要釋出到遠端伺服器的路徑,必須是一個二級及以上的絕對目錄路徑,
tag: '123' // 不解釋
},{ // 以下內容為假資料,到時候改成真實伺服器地址
name: '預釋出環境',
env: 'pre_release',
ssh: {
host: '00.0.0.0',
port: 22,
user: 'root',
userName: 'root',
password: 'password',
},
buildCommand: 'build',
localPath: 'dist',
remotePath: '/data/d5-meal',
tag: 'v1.0'
},{ // 以下內容為假資料,到時候改成真實伺服器地址
name: '正式環境',
env: 'publish',
ssh: {
host: '00.0.0.0',
port: 22,
user: 'root',
userName: 'root',
password: 'password',
},
buildCommand: 'build',
localPath: 'dist',
remotePath: '/data/d5-meal',
tag: 'v1.0'
}],
//modules結束
// nobuild: true, // 如果寫了,就不預設執行上線命令的時候執行npm run build
tag: 'v1.0',
afterHooks: { // 控制檯列印一些資訊,可有可無吧
when: 'prompt',
fn({ name, ssh: { host }, localPath = '.', localPathEntries = [], remotePath, nobackup = false, nobuild = false, merge = false }, env, next) {
console.log(`Config: ...
name: %s
env: %s
host: %s
======
local path: %s
local entries: %s
remote path: %s
======
nobuild: %s
nobackup: %s
merge: %s
`, name, env, host, localPath, localPathEntries, remotePath, nobuild, nobackup, merge);
next();
},
}
}複製程式碼
fjpublish env -s/-m
標準釋出
-s 以單選提示器的方式選擇釋出環境。vue用過 -m 以多選提示器的方式選擇釋出環境, 單選和多選只需要配置其中之一即可。記得按回車選定
-d 開啟差異化(diff)釋出,釋出專案時只上傳有改動或新增的檔案,這樣做能大大提升專案上傳的速度。自動開啟merge,和伺服器檔案對比,但是不能禁用歷史記錄功能。想想也好理解
--nobackup 釋出時是否備份舊檔案。預設進行備份,備份方式為例如abc檔案將被備份為abc.{時間戳}。 若選擇不備份,fjpublish為了安全起見是進行軟刪除, 即使用mv命名移動至shellTrashPath設定的目錄,預設為'/tmp/fjpublishTrashDir',例如備份/www/test/abc,則將其移動至/tmp/fjpublishTrashDir/www.test.abc.{時間戳} 。
還原
是可以還原的,有需要的看官網或者外掛作者部落格吧。
如何使用mac登入伺服器,
ssh root@0.0.0.0 //root 替換為伺服器管理員的username,後面的IP換成伺服器地址
// 然後輸入密碼就上去了
// 伺服器上刪除檔案 rm -rf 檔名 (千萬別用,大殺器)複製程式碼
如果你不像儲存以前的版本,那就往後加一個--nobackup吧。
結論
使用這個以後,以Vue-cli為例,只需要在上線的時候執行fjpublish env -s
,然後選擇上線的環境,就好自動幫你build一份上傳到伺服器,對,就是這樣的,npm run build
這個命令你都不需要輸入,下次有空說說伺服器上的nginx怎麼配。