CorrelAid / CorrelAid/formtransform

Attach a prebuilt package tarball to release tags

Open
#4 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
TypeScript
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

What

Attach a prebuilt tarball of this package to each release tag, so a consumer can install a specific version without the git-clone-and-build path.

Why, now that #3 is fixed

#3 removed the blocker (xlsx no longer resolves from a CDN URL), and a fresh npm install "git+…#main" now succeeds and builds dist/ via the prepare script. So this is no longer about being able to install — it is about not having to build at install time:

  • Build cost on every consumer install. prepare runs tsc over ~50 modules in every consumer, in every CI run, on every deploy. CorrelAid/formtransform-app and CorrelAid/formulaid deploy through nixpacks with bun install --frozen-lockfile; both pay it.
  • Environments that block install scripts. A policy that disallows lifecycle scripts (npm's allowScripts, --ignore-scripts, some corporate mirrors) yields a package with no dist/ at all, and the failure is an unresolved-entry error at bundle time rather than at install. That is the shape of the original #1 report.
  • devDependencies at install time. Building requires TypeScript in the consumer's dependency tree resolution for this package; a prebuilt artifact needs none of it.

Shape

A workflow on tag push that runs npm ci && npm run build && npm pack, then attaches the resulting correlaid-formtransform-<version>.tgz to the GitHub release. Consumers pin the asset URL instead of the git ref:

"@correlaid/formtransform": "https://github.com/CorrelAid/formtransform/releases/download/v1.0.0/correlaid-formtransform-1.0.0.tgz"

.github/workflows/worker-image.yml already publishes the schematron-worker image on a tag, so the release trigger and permissions pattern exist to copy.

Points to settle while implementing:

  • Version source. package.json is at 0.1.0 and no tags exist yet. Decide whether the tag drives the version or vice versa, and whether the release job asserts they match.
  • One artifact or two. The generated skills/cdl-survey-types/ sub-skill has the same problem from a different angle: CorrelAid/formulaid currently vendors it with git archive against a pinned SHA (its issue #9), which means it has to know this repo's directory layout, and a rename here breaks its build with a 404. A second asset — the sub-skill as its own tarball — would give it a stable URL. Cheap to add in the same job.
  • Do not commit dist/ as an alternative. @correlaid/cdl-design does that, and it works, but it puts build output in review diffs and lets the committed artifact drift from src/. A release asset gives the same benefit with the build pinned to a tag.

Not urgent

Nothing is broken without this. It is a cost and robustness improvement, and it removes the last reason a consumer would need to know that this package builds itself on install.

Raised from CorrelAid/formulaid issue #12, which tracks the consumer side.

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 package.json and .github/workflows/worker-image.yml, then trace the existing build and packaging commands: npm ci, npm run build, and npm pack. Decide how tags and the package version should relate, and whether to include the cdl-survey-types asset. Done means a tag-triggered release publishes the expected tarball and a consumer can install it from the release URL without building at install time.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, typescript
Domain
build-system, ci-cd, release
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.