refactor: Migrate Gulp build to GitHub Actions
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 177
- Forks
- 87
- Avg merge
- 1m
- Merged PRs (30d)
- 1
Description
Proposal: Remove Gulp from the data build
Gulp currently orchestrates the pipeline that produces src/_data/tools.yaml (gulpfile.js/index.js), piping content through lib/data/transform/* functions via gulp-transform/gulp-rename. Since GitHub Actions already schedules and runs this build, Gulp's task-runner/stream layer adds indirection without adding capability.
Finding: every lib/data/transform/* function is already Gulp-agnostic — each is a plain (content) => string | Promise<string> function, confirmed by their existing unit tests, which call them directly with a single string argument. None of them use Gulp's Vinyl file argument, and all GitHub API auth (GH_API_USERNAME/GH_API_TOKEN/GH_API_CONCURRENCY_LIMIT) is already read from process.env inside the transform functions, not injected by Gulp. So this is purely an orchestration swap — no changes to lib/data/** logic.
Approach:
- Replace
gulpfile.js/index.jswithscripts/build-data.js, a plain Node script (--task full|metadata) that chains the samelib/datafunctions in the same order, using the sameyargsflags (--metadata,--env-file,--output-dir,--dry-run) anddotenvloading as today. - Move the non-Gulp-specific config (
gulpfile.js/metadata.json,gulpfile.js/.env) toconfig/metadata.json/config/.env. - Update
package.json'sbuild:data:full/build:data:metadatascripts to call the new script; drop thegulp,gulp-cli,gulp-rename,gulp-transformdependencies. - No GitHub Actions workflow changes needed —
full.yaml/metadata.yamlinvoke the build only viayarn run build:data:full/build:data:metadata, so preserving those script names means the workflows keep working unchanged. - Verify equivalence once during PR review by diffing old-Gulp vs new-script output (
tools.yaml,raw-sources.yaml) under--dry-run; no new automated test needed since the underlyinglib/data/transform/*logic (and its existing test coverage) is untouched. - Update
README.md,CONTRIBUTING.md, andCLAUDE.mdreferences to Gulp accordingly.
Single PR, low risk — mechanical orchestration swap only.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with gulpfile.js/index.js, the existing lib/data/transform/* unit tests, and the build:data:full and build:data:metadata scripts in package.json. Trace the current task order and flags before creating scripts/build-data.js and moving the configuration files. Done means the scripts produce equivalent tools.yaml and raw-sources.yaml output under --dry-run, Gulp dependencies and references are removed, and the existing GitHub Actions commands still work.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, javascript, node.js
- Domain
- build-system, documentation, tooling
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 68/100