Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Command-Line Apps
  3. foy

foy

MITTypeScript

A simple, lightweight, type-friendly, and modern task runner for general-purpose automation.

Visit WebsiteGitHubGitHub
290 stars16 forks0 contributors

What is foy?

Foy is a lightweight, modern task runner for automating build processes, scripts, and general-purpose tasks in JavaScript and TypeScript projects. It provides a promise-based API with built-in utilities for file operations, command execution, and logging, aiming to simplify automation without the complexity of larger tools.

Target Audience

JavaScript and TypeScript developers who need a straightforward, type-friendly task runner for build automation, scripting, or CI/CD workflows, especially those seeking an alternative to Gulp or Grunt.

Value Proposition

Developers choose Foy for its minimal learning curve, TypeScript support, and small footprint, offering a clean, promise-based API that reduces boilerplate while maintaining flexibility for complex task orchestration.

Overview

A simple, light-weight, type-friendly and modern task runner for general purpose.

Use Cases

Best For

  • Automating build steps in TypeScript projects
  • Creating lightweight CI/CD scripts
  • Managing task dependencies with serial or parallel execution
  • Watching files and restarting processes during development
  • Writing clean, promise-based automation scripts
  • Organizing tasks with namespaces in large codebases

Not Ideal For

  • Projects requiring extensive plugin ecosystems like Gulp's for asset processing (e.g., image optimization, CSS preprocessing)
  • Teams that prefer graphical interfaces or IDE integrations for task management and monitoring
  • Large-scale enterprise builds with complex, pre-existing toolchains that Foy's simplicity might not integrate with easily

Pros & Cons

Pros

Clean Promise-Based API

Enables writing asynchronous tasks using async/await for readable scripts, as shown in examples like task('build', async ctx => { await ctx.exec('tsc') }) for straightforward automation.

First-Class TypeScript Support

Provides type-safe task options and seamless integration with TypeScript files, allowing generics for options and Foyfile.ts usage with compilers like tsx.

Minimal Overhead

Boasts a small install size compared to Gulp or Grunt, reducing dependency bloat and startup time, as highlighted in the README's install size badges.

Flexible Task Orchestration

Supports serial/parallel dependencies, namespaces, and lifecycle hooks, enabling complex workflows without unnecessary complexity, like using dep().async() for concurrent execution.

Cons

No Built-In Plugin System

Lacks a dedicated plugin architecture, so extending functionality requires manual integration of external npm packages, increasing setup and maintenance effort.

Additional Setup for TypeScript

Using TypeScript Foyfiles necessitates installing compilers like ts-node or tsx, adding an extra configuration step that zero-config tools avoid.

Limited Third-Party Support

As a niche tool, it has fewer community-contributed resources, plugins, and examples compared to established runners, which can hinder troubleshooting.

Open Source Alternative To

foy is an open-source alternative to the following products:

Gulp
Gulp

Gulp is a JavaScript toolkit and task runner that uses a code-over-configuration approach to automate tasks like bundling, minification, and optimization in web development.

Grunt
Grunt

Grunt is a JavaScript task runner that automates repetitive tasks like minification, compilation, unit testing, and linting in web development workflows.

Frequently Asked Questions

Quick Stats

Stars290
Forks16
Contributors0
Open Issues0
Last commit1 month ago
CreatedSince 2018

Tags

#async-await#shell-scripting#promise-based#dev-tools#build-automation#cli-tool#nodejs#typescript#tasks#cli#javascript#runner#file-watcher#make#promise#task-runner#build-tool

Built With

T
TypeScript
N
Node.js

Links & Resources

Website

Included in

Command-Line Apps19.2k
Auto-fetched 8 hours ago

Related Projects

justjust

🤖 Just a command runner

Stars35,682
Forks840
Last commit6 days ago
grexgrex

A command-line tool and Rust library with Python bindings for generating regular expressions from user-provided test cases

Stars8,182
Forks198
Last commit6 months ago
reboundrebound

Instant Stack Overflow results whenever an exception is thrown

Stars4,114
Forks381
Last commit4 years ago
add-gitignoreadd-gitignore

An interactive CLI tool that adds a .gitignore to your projects.

Stars730
Forks16
Last commit2 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub