# AGENTS.md - Gulp Tasks

Package-specific guidance for `@gravityforms/gulp-tasks`. See root `AGENTS.md` for shared conventions.

## Purpose

Centralized build pipeline providing configurable Gulp and webpack tasks used across all Gravity projects for building, linting, testing, and releasing.

## Module System

This package is **ESM** (`"type": "module"` in package.json). All `src/` files use `import`/`export`.

CJS-only dependencies (`find-config`, `gulp`, `webpack`, `postcss-*`, etc.) are loaded via a `createRequire` bridge named `cjsRequire` to avoid language-server hints about `require()`.

Consumer `gravityforms.config.js` files remain CJS — loaded by `findConfig.require()` in `config.js`.

### Consumer Compatibility (v9 breaking changes)

Consumers upgrading from v8 must update 3 files:

1. **`config/gulp/webpack.js`** — add `.default` to cache-group-parser import
2. **`babel.config.js`** — add `.default` to babel.config import
3. **`.eslintrc.js`** — update path from `.eslintrc.js` to `.eslintrc.cjs`

## Key Files & Directories

- `gulpfile.js` — Main entry point (ESM, static imports for all 16 task files)
- `config.js` — Config loader using `createRequire` bridge for `find-config`
- `jest.config.cjs` — Jest config (CJS, async imports ESM `config.js`)
- `webpack.config.cjs` — Webpack config (CJS, Promise-based import of ESM webpack config)
- `.eslintrc.cjs` — ESLint config (CJS, consumed by projects via `require()`)
- `jest.setup.js` — Jest setup (ESM, **must not be renamed** — consumer paths hardcode it)
- `src/webpack/` — Base webpack configurations (admin, theme, libraries, components)
- `src/scripts/` — Utility scripts for builds
- `src/packages/` — Internal tools (documentation extractors, etc.)

## Configuration

All behavior is driven by the consuming project's `gravityforms.config.js` at the repository root. Webpack overrides live in `config/gulp/webpack.js`.

### Build Targets

- `admin` — Admin-side JavaScript
- `theme` — Frontend JavaScript
- `admincomponents`, `adminblocks`, `adminsettings` — Specific admin bundles
- `libraries`, `utils`, `reactutils` — Shared code bundles

## Dependencies

- `@gravityforms/node-utils`
