前端自動上線系統

寫以前沒看到這個插件的開發者已經在掘進上發了文章,我這個沒看懂或者須要更深刻的查看的,能夠去他的頁面或者去官網看文檔。
使用nodejs改進發布流程(上)vue


警告

被玩壞了,好了,下面linux上刪除文件的命令我刪除了,我會加上這個工具開發者加的那個安全刪除,要不你們要是運行如下rm -rf *或者斜槓多個空格,估計下面警告都不用看了。node

配置好的文件不要用代碼託管,由於配置文件裏有你服務器的信息,丟了老大殺了你怎麼辦,我也很爲難啊。linux

若是你還想好好活着,配置好的文件不要發到網上,包括但不限於github等的網站,雖然你的爛代碼沒人看,可是萬一呢。
若是你還想好好活着,配置好的文件不要發到網上,包括但不限於github等的網站,雖然你的爛代碼沒人看,可是萬一呢。

如何讓git或者svn忽略它們你本身查。

若是本文章讓你感到懵逼,能夠去官網看看,我只是在官網文檔找了一些我須要的配置。nginx

首先全局安裝fjpublishgit

npm i fjpublish -g
//或者
yarn global add fjpulish複製代碼

而後把下面的配置文件放到項目根目錄,文件名fjpublish.config.jsgithub

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怎麼配。

相關文章
相關標籤/搜索