最近本身造了个轮子——ga-tracker,即适用于UniApp和微信小程序的谷歌统计 (Google Analytics) SDK,喜欢的朋友能够点个Star!node
然而当每次更新或修复bugs的时候,都须要手动去更新npm
包以及release
包,所以就想尝试一下利用github Actions
来实现自动发布npm
和release
。git
关于github actions的学习,能够去看看官方文档github
当咱们想使用github actions
将文件上传到npm
库时,则须要在github
配置一下npm access tokens
。npm
来到npmjs
下,登陆你的帐号,而后点击Access Tokens
。json
而后点击Generate New Token
建立一个新的Token
。ubuntu
而后选择Automation
,肯定建立Token
。小程序
而后来到你的Github
,选择你的项目,点击Settings
,而后选择Secrets
,点击New repository secret
。微信小程序
输入名称和Tokens
,而后点击保存。缓存
github actions
配置文件在你的项目下,新建.github
目录,而后再新建一个workflows
目录,接着在里面新建一个yml
文件。微信
github会自动检测.github/workflows
下的全部配置文件,并在每一次连接到远程仓库的时候执行它们。
在编辑以前,我先简单说明一下个人项目结构。
个人项目打包文件都放在dist
路径下,在里面除了打包文件以外,还包含package.json
和README.md
,这两个文件是上传到npm
必需的。
接下来咱们开始编辑配置文件。
# action名称
name: Push Release
# 当代码合并到master分支的时候,执行下列脚本
on:
push:
branches: [ master ]
# 任务
jobs:
# publish-npm任务
publish-npm:
# 在ubuntu最新版本的虚拟机执行
runs-on: ubuntu-latest
# 设置变量
strategy:
matrix:
node-version: [ 12.x ]
steps:
# 检查并切换到master分支
- name: 检查master分支
# 使用actions/checkout插件
uses: actions/checkout@master
# 安装node
- name: 设置Node.js
# 使用actions/setup-node插件
uses: actions/setup-node@master
with:
# node版本
node-version: ${{ matrix.node-version }}
# 初始化缓存
- name: 缓存
uses: actions/cache@v2
id: cache-dependencies
with:
path: node_modules
key: ${{runner.OS}}-${{hashFiles('**/yarn.lock')}}
# 读取当前版本号
- name: 读取当前版本号
id: version
uses: ashley-taylor/read-json-property-action@v1.0
with:
# 读取dist/package.json的,而不是根路径下的package.json
path: ./dist/package.json
property: version
# 发布NPM包
- name: 发布NPM包
# 执行发布代码
run: | cd dist npm config set //registry.npmjs.org/:_authToken=$NPM_TOKEN npm publish env:
# 配置 npm access token 环境变量
NPM_TOKEN: ${{secrets.NPM_ACCESS_TOKEN}}
# 建立GitHub Release
- name: 建立GitHub Release
id: create_release
uses: actions/create-release@latest
env:
# 配置github token (这个无需去github配置,默认存在的)
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# 标签名
tag_name: v${{steps.version.outputs.value}}
# release名
release_name: v${{steps.version.outputs.value}}
# 是否为草稿
draft: false
# 是否为预发布
prerelease: false
# 上传Release Asset
- name: 上传Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# 上传URL为建立GitHub Release步骤的输出值,可经过配置的id获取
upload_url: ${{ steps.create_release.outputs.upload_url }}
# 上传文件信息
asset_path: ./dist/index.js
asset_name: index.js
asset_content_type: application/js
# 刷新缓存
- name: 刷新缓存
run: | curl https://purge.jsdelivr.net/npm/iemotion-pic@latest/dist/name.json 复制代码
github actions
当编辑好配置文件后,只需将代码提交到github
,并合并到master
分支,github
就会自动执行脚本。
你也能够在项目主页,点击actions
选项查看。
同时你能够点进去,进一步查看执行状况,若是报错了你也能准肯定位到哪里出问题了。
此时看看npm包和release,也都都更新到最新版本了。