Esbuild Plugin Peggy 
🔌 Seamlessly load
.pegjs
or.peggy
grammar files directly into your esbuild pipeline
✨ Features
- Compile
.pegjs
/.peggy
files as ES modules with zero config - Fully compatible with both JavaScript and TypeScript
- No Node.js-only dependencies get into your codebase — frontend safe!
- Supports custom parser options and per-file overrides
- Simple, fast, and modern integration with esbuild
📦 Installation
pnpm add esbuild-plugin-peggy
or
npm install esbuild-plugin-peggy
or
yarn add esbuild-plugin-peggy
🚀 Usage
// esbuild.config.ts
import { build } from "esbuild";
import { peggyPlugin } from "esbuild-plugin-peggy";
build({
entryPoints: ["src/index.ts"],
bundle: true,
outfile: "dist/bundle.js",
plugins: [peggyPlugin()],
});
Then in your source code:
import parser from "./grammar.pegjs";
const result = parser.parse("your input here");
⚙️ Plugin Options
You can pass either a global config or a list of per-file configs using ParserBuildOptions
from peggy.
Global options
peggyPlugin({
allowedStartRules: ["Expression"],
});
Per-file options
peggyPlugin([
{
pathPattern: /calculator\.pegjs$/,
options: { allowedStartRules: ["Calc"] },
},
]);
📁 Supported File Types
.pegjs
.peggy
🛠 Example
import parser from "./math.pegjs";
console.log(parser.parse("2 + 2")); // 4
✅ Why Use This?
- Skip manual parser builds — just import and use
- Compatible with modern tooling and frameworks
- Great for in-browser parsing and visual tooling
- Keeps frontend builds clean of Node-only deps
Star this [repository](https://github.com/tiny-md/esbuild-plugin-peggy) and share it with friends.
📜 License
Licensed under the MPL-2.0 license. © Mayank Chaudhari
📚 Enroll in [our courses](https://mayank-chaudhari.vercel.app/courses) or [sponsor](https://github.com/sponsors/mayank1513) our work.
Made with 💖 by Mayank Kumar Chaudhari