寫以前沒看到這個插件的開發者已經在掘進上發了文章,我這個沒看懂或者須要更深刻的查看的,能夠去他的頁面或者去官網看文檔。
使用nodejs改進發布流程(上)vue
被玩壞了,好了,下面linux上刪除文件的命令我刪除了,我會加上這個工具開發者加的那個安全刪除,要不你們要是運行如下rm -rf *
或者斜槓多個空格,估計下面警告都不用看了。node
配置好的文件不要用代碼託管,由於配置文件裏有你服務器的信息,丟了老大殺了你怎麼辦,我也很爲難啊。linux
若是本文章讓你感到懵逼,能夠去官網看看,我只是在官網文檔找了一些我須要的配置。nginx
首先全局安裝fjpublishgit
npm i fjpublish -g
//或者
yarn global add fjpulish複製代碼
而後把下面的配置文件放到項目根目錄,文件名fjpublish.config.js
github
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
標準發佈 shell
-s 以單選提示器的方式選擇發佈環境。vue用過 -m 以多選提示器的方式選擇發佈環境, 單選和多選只須要配置其中之一便可。記得按回車選定npm
-d 開啓差別化(diff)發佈,發佈項目時只上傳有改動或新增的文件,這樣作能大大提高項目上傳的速度。自動開啓merge,和服務器文件對比,可是不能禁用歷史記錄功能。想一想也好理解安全
--nobackup 發佈時是否備份舊文件。默認進行備份,備份方式爲例如abc文件將被備份爲abc.{時間戳}。 若選擇不備份,fjpublish爲了安全起見是進行軟刪除, 即便用mv命名移動至shellTrashPath設置的目錄,默認爲'/tmp/fjpublishTrashDir',例如備份/www/test/abc,則將其移動至/tmp/fjpublishTrashDir/www.test.abc.{時間戳} 。bash
是能夠還原的,有須要的看官網或者插件做者博客吧。
如何使用mac登陸服務器,
ssh root@0.0.0.0 //root 替換爲服務器管理員的username,後面的IP換成服務器地址
// 而後輸入密碼就上去了
// 服務器上刪除文件 rm -rf 文件名 (千萬別用,大殺器)複製代碼
若是你不像保存之前的版本,那就日後加一個--nobackup吧。
使用這個之後,以Vue-cli爲例,只須要在上線的時候運行fjpublish env -s
,而後選擇上線的環境,就好自動幫你build一份上傳到服務器,對,就是這樣的,npm run build
這個命令你都不須要輸入,下次有空說說服務器上的nginx怎麼配。