这样我们获取 inputs 里的参数就可以这么写:
import core from '@actions/core'import type { UserDefinedOptions from './type'export function getActionOptions (): UserDefinedOptions { const token = core.getInput('token') const username = core.getInput('username') // getBooleanInput 其实本质上就是一种 parseBoolean(core.getInput('key')) const motto = core.getBooleanInput('motto') const filepath = core.getInput('filepath') const title = core.getInput('title') const includeFork = core.getBooleanInput('includeFork') const includeArchived = core.getBooleanInput('includeArchived') const onlyPrivate = core.getBooleanInput('onlyPrivate') return { token username motto filepath title includeFork includeArchived onlyPrivate
当然我们也可以轻而易举的获取到上下文里的信息和 octokit 实例:
import github from '@actions/github'// 使用action的仓库名github.context.repo.repo// token 为 the repo PAT or GITHUB_TOKENoctokit = github.getOctokit(token)// 获取一个人的仓库const res = await octokit.rest.repos.listForUser({ username: 'sonofmagic' per_page: 20 page: 1 sort: 'updated')
4. 在你的 main 函数填入逻辑
我们回到入口点 , 在代码中填充逻辑
async function main(){ const options = getActionOptions() // do somethingmain()
5. 把结果打包输出到指定目录
这里我把打包结果输出到了 lib 文件中 , 值得注意的是 , 官方文档中是使用 @vercel/ncc(webpack) , 同时还把 node_modules/* 也提交到 Github 上 。 这里我们优化一下 , 采用了 rollup 打包 , 直接把依赖项打入构建产物中 。
import typescript from '@rollup/plugin-typescript'import { nodeResolve from '@rollup/plugin-node-resolve'import commonjs from '@rollup/plugin-commonjs'import json from '@rollup/plugin-json'import pkg from './package.json'import { terser from 'rollup-plugin-terser'const isDev = process.env.NODE_ENV === 'development'/** @type {import('rollup').RollupOptions */const config = { input: 'src/index.ts' output: { dir: 'lib' format: 'cjs' exports: 'auto' plugins: [ // 嫌弃 lib 太大可以压缩一下 terser() json() nodeResolve({ preferBuiltins: true ) commonjs() typescript({ tsconfig: './tsconfig.build.json' sourceMap: isDev )
external: [ ...(pkg.dependencies ? Object.keys(pkg.dependencies) : [
) 'fs/promises'
export default config
然后再 git add lib/* 添加构建产物 , 提交 。 这样 , lib 中大量的 \"无用\" 代码也被提交到了 Github 。
- 社交|腾讯视频为IP编写「价值算法」
- GitHub|用户46万被支付宝冻结1000天引起的思考:阿里的权力边界在哪里?
- “一次编写,运行各端”,高通重磅发布 AI 软件栈!
- GitHub|马斯克的孩子提交了改名申请,以断绝与这位亿万富翁的关系
- GitHub|周鸿祎再开炮,但360已翻不起浪花
- 将宇宙中所有的天体压缩在一起,可以组成多大的星球?
- AI 帮写代码 67 元/月!GitHub Copilot 搞收费“双标”,劝退大批程序员
- githubcopilot正式版10美元/月免费使用
- 当24款不同的头显原型机一起呈现在眼前时|四大vr原型机面世,下一代vr头显会是什么样?
- 微软 Github AI 编程工具 Copilot 今日正式上线,学生免费使用
