文章推荐群体:前端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…