# webpack/tapable

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/webpack-tapable).**

3,862 stars · 396 forks · JavaScript · MIT

## Links

- GitHub: https://github.com/webpack/tapable
- awesome-repositories: https://awesome-repositories.com/repository/webpack-tapable.md

## Topics

`hook` `hooks` `javascript` `plugin` `plugins`

## Description

Tapable is a JavaScript plugin architecture framework and event-driven hook library. It serves as a high-performance callback engine and asynchronous workflow coordinator for building extensible systems.

The library differentiates itself by compiling plugin logic into cached functions to minimize dispatch overhead. It provides a variety of execution patterns, including serial, parallel, and waterfall flows, as well as looping sequences and short-circuit execution.

The framework covers the definition of custom event hooks, the management of plugin execution ordering, and the interception of hook lifecycles. It also includes shared state management to pass data between decoupled plugins and interceptors.

## Tags

### Software Engineering & Architecture

- [Event-Driven Hook Systems](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-hook-systems.md) — Provides a standardized system of event-driven hooks for building highly extensible plugin architectures.
- [Asynchronous Callback Chains](https://awesome-repositories.com/f/software-engineering-architecture/asynchronous-callback-chains.md) — Implements asynchronous callback chains to coordinate serial, parallel, waterfall, and looping execution flows.
- [Asynchronous Workflow Management](https://awesome-repositories.com/f/software-engineering-architecture/asynchronous-workflow-management.md) — Coordinates the execution of multiple independent tasks through parallel, serial, or waterfall sequences.
- [Plugin Execution Ordering](https://awesome-repositories.com/f/software-engineering-architecture/dependency-graph-resolution/concurrent-dependency-resolution/plugin-execution-ordering.md) — Implements a system for determining the sequence of callback execution through numeric stages or explicit plugin dependencies. ([source](https://github.com/webpack/tapable#readme))
- [Event-Driven Hooks](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-hooks.md) — Ships a library for defining and triggering synchronous or asynchronous event hooks that execute registered functions.
- [Compiled Callback Engines](https://awesome-repositories.com/f/software-engineering-architecture/high-performance-engineering/performance-engines/compiled-callback-engines.md) — Operates as a high-performance engine that compiles plugin logic into cached functions to minimize dispatch overhead.
- [High-Performance Event Dispatching](https://awesome-repositories.com/f/software-engineering-architecture/high-performance-event-dispatching.md) — Implements a high-performance dispatch system that minimizes overhead by compiling plugin logic into optimized functions.
- [Custom Hook Definitions](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/extensibility/plugin-architectures/hook-event-orchestration/custom-hook-definitions.md) — Allows developers to define custom lifecycle points where plugins can register synchronous or asynchronous callbacks. ([source](https://github.com/webpack/tapable#readme))
- [JavaScript Plugin Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/javascript-plugin-frameworks.md) — Provides a framework for building event-driven plugin systems using custom hooks and registered callbacks.
- [Middleware Pipeline Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/middleware-pipeline-frameworks.md) — Allows the creation of custom function chains that intercept and modify data as it flows through the system.
- [Parallel Callback Execution](https://awesome-repositories.com/f/software-engineering-architecture/parallel-callback-execution.md) — Provides a mechanism to execute all registered asynchronous plugin callbacks simultaneously and wait for their collective completion. ([source](https://github.com/webpack/tapable#readme))
- [Core Engine Extension Points](https://awesome-repositories.com/f/software-engineering-architecture/plugin-based-extensibility/application-extensibility-frameworks/core-engine-extension-points.md) — Provides defined extension points within the core engine for third-party developers to modify internal system behavior.
- [Short Circuit Execution](https://awesome-repositories.com/f/software-engineering-architecture/short-circuit-execution.md) — Allows the execution chain to stop immediately as soon as a callback returns a value, preventing further plugins from running. ([source](https://github.com/webpack/tapable#readme))
- [Complex Workflow Coordination](https://awesome-repositories.com/f/software-engineering-architecture/system-internals/centralization-patterns/workflow-execution-managers/complex-workflow-coordination.md) — Coordinates complex function execution patterns, including serial, parallel, and waterfall flows with data piping.
- [Functional Data Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/design-patterns/functional-design-patterns/functional-data-pipelines.md) — Implements data pipelines where the return value of one function is passed as the input to the next in the chain. ([source](https://github.com/webpack/tapable#readme))
- [Context Sharing](https://awesome-repositories.com/f/software-engineering-architecture/context-sharing.md) — Provides a shared context object that allows decoupled plugins to read and write shared data during execution.
- [Hook Lifecycle Interception](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/extensibility/plugin-architectures/hook-event-orchestration/hook-resolution-lifecycles/lifecycle-hooks/hook-lifecycle-interception.md) — Enables the injection of custom logic at specific points in the hook lifecycle, such as before a call starts or during error handling. ([source](https://github.com/webpack/tapable#readme))
- [Middleware Lifecycle Hooks](https://awesome-repositories.com/f/software-engineering-architecture/middleware-lifecycle-hooks.md) — Provides hooks that intercept and modify the lifecycle of data and events flowing between plugins.
- [Recursive Execution Loops](https://awesome-repositories.com/f/software-engineering-architecture/recursive-execution-loops.md) — Restarts the function execution chain from the beginning whenever a callback returns a value instead of undefined. ([source](https://github.com/webpack/tapable#readme))

### Programming Languages & Runtimes

- [Callback Compilation](https://awesome-repositories.com/f/programming-languages-runtimes/compiler-interpreter-internals/compiler-infrastructure/compiler-optimizations/just-in-time-compilation/tiered-jit-compilation/general-jit-compilers/callback-compilation.md) — Minimizes runtime overhead by compiling registered plugin logic into cached, optimized JavaScript functions.

### Development Tools & Productivity

- [Inter-Plugin State Sharing](https://awesome-repositories.com/f/development-tools-productivity/plugin-lifecycle-management/plugin-data-stores/inter-plugin-state-sharing.md) — Provides a shared context object that allows decoupled plugins to pass and share arbitrary data during execution. ([source](https://github.com/webpack/tapable#readme))

### Networking & Communication

- [Shared Interface Event Broadcasting](https://awesome-repositories.com/f/networking-communication/event-notifications/typed-event-broadcasts/shared-interface-event-broadcasting.md) — Distributes a single event trigger to multiple registered functions simultaneously using a shared interface. ([source](https://github.com/webpack/tapable#readme))
