GitHub|一起编写个多用途 Github Action 吧!( 二 )


这样我们获取 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 。