node-gradle / node-gradle/gradle-node-plugin

Support (or don't proclude) the Gradle Worker API

Open
#192 8 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

build service / worker api
Dominant language
Groovy
Stars
677
Forks
120
PR merge metrics
No merged PRs in 30d

Description

One inherent limitation of Gradle projects is only a single task can run at any given time, with the Worker API (https://docs.gradle.org/current/userguide/worker_api.html#converting_to_the_worker_api) to allow many jobs to be run within a single task, using the Worker API requires specifically coding for it though.

The current 3.x by accident (i assume?) has a number of the right abstractions to make using the worker API possible, but similar to https://github.com/node-gradle/gradle-node-plugin/issues/190 having classes not be open makes extending the various innards of the library hard/impossible. For example the ProjectApiHelper abstraction solves for a large part of the normal problems implementors have with using the Worker API, but closed classes and NodeExtension relying on Project are two other blockers.

Since the use of the Worker API is pretty specific (for ex run N jest test suites in parallel) and the intent of this library is quite broad (run npm/yarn stuff) I don't expect you would do the implementation to support this, just maybe make it more possible for this library be extended to support it? Open to PRs?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the Gradle Worker API documentation and inspect ProjectApiHelper, NodeExtension, and the closed classes identified as blockers. Determine which extension points are needed for a Worker API implementation; done means the plugin can be extended for that use case without changing its core behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
groovy, node.js
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.