@gravityforms/gulp-tasks
Version:
Configurable Gulp tasks for use in Gravity Forms projects.
51 lines (32 loc) • 2.21 kB
Markdown
# 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`