New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

@savvy-web/github-action-builder

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@savvy-web/github-action-builder

A zero-config build tool for creating GitHub Actions from TypeScript. Bundles with rsbuild, validates action.yml against GitHub's schema, and outputs production-ready Node.js 24 actions.

latest
Source
npmnpm
Version
0.6.2
Version published
Maintainers
1
Created
Source

@savvy-web/github-action-builder

A zero-config build tool for creating GitHub Actions from TypeScript source code. Bundles your action with @rsbuild/core (rspack-based), validates action.yml against GitHub's official schema, and outputs production-ready Node.js 24 actions.

Features

  • Zero-config - Auto-detects entry points from src/main.ts, src/pre.ts, src/post.ts
  • Node.js 24 - Builds modern ESM actions for the latest GitHub Actions runtime
  • Schema validation - Validates action.yml against GitHub's official metadata specification
  • Single-file bundles - All npm dependencies inlined via rsbuild, node: builtins externalized, with tree-shaking support
  • Local testing - Auto-persists build output for testing with nektos/act
  • CI-aware - Strict validation in CI, warnings-only locally

Quick Start

Create a new GitHub Action project with a single command:

npx @savvy-web/github-action-builder init my-action
cd my-action
npm install
npm run build

That's it! Your action is built and ready. The init command generates a complete project:

my-action/
├── src/
│   ├── main.ts      # Main action entry point
│   ├── pre.ts       # Pre-action hook
│   └── post.ts      # Post-action cleanup
├── action.yml       # GitHub Action metadata
├── action.config.ts # Build configuration
├── package.json     # Dependencies and scripts
└── tsconfig.json    # TypeScript configuration

Edit src/main.ts with your action logic, then rebuild with npm run build. Your bundled action is in dist/main.js, ready to commit and use.

Basic Usage

Initialize

Create a new GitHub Action project:

npx @savvy-web/github-action-builder init my-action

Build

Bundle all entry points into dist/:

npm run build
# or directly:
npx @savvy-web/github-action-builder build

Validate

Check your action.yml and configuration without building:

npm run validate
# or directly:
npx @savvy-web/github-action-builder validate

Project Structure

The builder expects this structure:

my-action/
├── src/
│   ├── main.ts     # Required - main action entry point
│   ├── pre.ts      # Optional - runs before main
│   └── post.ts     # Optional - runs after main (cleanup)
├── action.yml      # GitHub Action metadata (runs.using: "node24")
├── action.config.ts # Optional configuration
└── package.json

Configuration

Customize action.config.ts for your project:

import { GitHubAction } from "@savvy-web/github-action-builder";

export default GitHubAction.create({
  entries: {
    main: "src/main.ts",
    post: "src/cleanup.ts",
  },
  build: {
    minify: true,
    sourceMap: false,
  },
});

action.yml Requirements

Your action.yml must use Node.js 24:

name: "My Action"
description: "Does something useful"
runs:
  using: "node24"
  main: "dist/main.js"
  post: "dist/post.js" # Optional

Documentation

Programmatic API

Use the builder programmatically in your scripts:

import { GitHubAction } from "@savvy-web/github-action-builder";

const action = GitHubAction.create();
const result = await action.build();

if (result.success) {
  console.log(`Built ${result.build?.entries.length} entry points`);
}

Shared TypeScript Configuration

The package exports a base tsconfig.json for GitHub Action projects:

{
  "extends": ["@savvy-web/github-action-builder/tsconfig/action.json"]
}

This provides sensible defaults for Node.js 24 ESM actions including strict mode, ES2022 target, and bundler module resolution. Override or extend as needed in your project's tsconfig.json.

Requirements

  • Node.js 24+
  • TypeScript source files
  • action.yml with runs.using: "node24"

License

MIT

Keywords

github-actions

FAQs

Package last updated on 28 Mar 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts