文章推薦羣體:前端Dev、桌面端Dev、DevOps與Github羊毛黨html
2016年6月,Github發佈了GitHub Pages功能,它容許將靜態網頁文件存放在github倉庫上,並將其發佈成web網站。藉助Hexo博客框架及其周邊豐富、優美的博客主題,可讓程序員使用markdown語法搭建出精美、簡潔的博客網站。隨後,Github page還支持自定義域名、https...前端
無需服務器、免費https證書,無需操心運維,一時間,很多博客主紛紛放棄wordpress,轉戰Github Page。node
私覺得這可謂廣大博客主們「薅github羊毛」的邁出的第一步。react
爲何說「薅github羊毛」,是由於我發現愈來愈多的項目在極致地開發出github的潛能,好比將github gist做爲前端應用的存儲後端、homebrew還將github做爲包發佈和審覈平臺linux
Github Page已成歷史,而今天我這裏介紹的除了Github Page,還將介紹如何在Github上持續發佈我的全平臺應用做品。nginx
其中,「持續發佈」意味着我將介紹:git
而「全平臺」包括:程序員
這意味你開發的我的做品將支持同時發佈在以上各操做系統或運行平臺上,想起來是否是有點些小激動呢?github
鑑於「怎麼在Github上部署本身的網站?怎麼綁定自定義域名」能夠在Google上搜到成千上萬條結果,本博客便不贅述相關細節。在這裏主要介紹如何將Github Page的發佈過程自動化。web
在這以前,咱們應該有這樣一個基本的共識,Github Page只支持純前端項目。因此咱們這裏不妨以React.js
項目爲例: React.js
採用以下腳本完成打包(包括JS/CSS構建、JS混淆minify、HTML模板渲染、manifest清單文件更新等)
"build": "react-scripts build", 複製代碼
運行yarn build
命令後,在build文件夾下將會生成上述構建產物,而使用nginx或者apache這樣的HTTP服務器將該目錄發佈,就能夠搭建一個靜態網站。
一般狀況下,咱們經常將github repo的master分支根目錄和docs目錄做爲github的發佈目錄。實際上github還支持將「gh-pages」分支做爲github page發佈分支。
這裏推薦一個npm庫gh-pages
,它能夠將指定目錄文件發佈到gh-pages
分支的npm庫,項目主頁:github.com/tschaub/gh-…
使用yarn install gh-pages
後在package.json
添加發布腳本
"release:web": "gh-pages -d build", 複製代碼
運行 yarn release:web
便可自動發佈。
Electron是由Github開發,同時包含Chromium和Node.js運行時環境的跨平臺桌面應用平臺。它能夠打包生成運行在Windows、Mac、Linux等多種操做系統的安裝包。經常使用的Virtual Studio Code、Slack APP就是基於Electron開發。
建議採用electron-builder npm庫打包electron應用。
yarn add -D electron-builder
複製代碼
打包腳本electron-builder.yml
appId: cn.wangbaiyuan.magpie files: - build/**/* - node_modules/**/* productName: Magpie幸運抽獎 artifactName: '${name}-${version}-for-${os}-${arch}.${ext}' icon: build/icon.png nsis: runAfterFinish: false deleteAppDataOnUninstall: true allowToChangeInstallationDirectory: true oneClick: false installerLanguages: zh_CN language: '2052' perMachine: true createDesktopShortcut: true win: target: nsis mac: target: dmg linux: target: deb 複製代碼
electron-builder能夠幫助咱們完成electron應用的安裝包打包,文件名加版本號,以及混淆加密。
Dockerhub除了是一個公用的docker鏡像倉庫,同時幫助咱們在無需CI/CD的狀況下免費、自動地構建docker鏡像,具體能夠參考wangbaiyuan.cn/using-docke…
release-it npm庫能夠實現發佈的自動化,實現如下功能
hooks: after:bump: yarn dist after:git:release: yarn release:web git: tagName: v${version} github: release: true assets: - dist/*-mac.zip - dist/*-win.exe - dist/*-linux.deb 複製代碼
更多請參考示例做品:github.com/geekeren/Ma…