Skip to content

chore: migrate to pnpm, oxlint/oxfmt and release-please - #55

Merged
mokevnin merged 3 commits into
mainfrom
chore/standards
Aug 11, 2026
Merged

mokevnin merged 3 commits into
mainfrom
chore/standards

Conversation

@mokevnin

Copy link
Copy Markdown
Contributor

Brings the repository in line with the Hexlet-wide toolchain, same recipe as hexlet-components/js-pairs#57.

  • pnpm replaces npm.
  • oxlint + oxfmt replace biome, with all 12 oxlint plugins enabled explicitly (by default only typescript, unicorn and oxc load).
  • release-please tracks the version and CHANGELOG and publishes in the same workflow. The tag-triggered release.yml is removed: release-please pushes the tag with GITHUB_TOKEN, and GitHub does not run workflows for events it raises, so that workflow never fired.
  • Node CI runs on pull requests only; it used to run again on the merge commit, re-testing what the PR had already covered.

Commits are split so the diff stays readable: tooling, CI and the pure-formatting pass are separate.

mokevnin and others added 3 commits August 11, 2026 15:19
Replace npm with pnpm (pnpm-lock.yaml, packageManager field) and biome with
oxlint + oxfmt, matching the toolchain used across Hexlet repositories.

oxlint enables all 12 plugins explicitly: by default it only loads typescript,
unicorn and oxc, so import, promise, node, jsdoc, vitest, react, react-perf,
jsx-a11y and vue checks would silently not run.

The Makefile spells the quiet flag as `pnpm --silent run <name>`. npm treated
a trailing -s as --silent, pnpm forwards it to the command instead. It matters
for the docs target in particular, where output is redirected into a file and
the pnpm banner would land inside it.

.oxfmtignore keeps oxfmt off non-JS files, which it would otherwise rewrite.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
release-please tracks the version and CHANGELOG from conventional commits and
publishes in the same workflow, gated on release_created.

Publishing does not live in a tag-triggered workflow: release-please pushes the
tag with GITHUB_TOKEN, and GitHub does not run workflows for events it raises,
so such a workflow never fires. release.yml is removed rather than left looking
like it publishes.

Node CI now runs on pull requests only. It used to run again on the merge
commit, re-testing what the pull request had already tested, so a merge started
two workflows on one commit.

PR titles are linted because squash merges turn them into the commit message
release-please reads. dependabot sets commit-message.prefix: chore so its PRs
pass that lint and do not trigger a version bump.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Pure formatting, no behaviour change. The diff is quote style: biome was
configured with single quotes, oxfmt defaults to double ones, and the default
is the convention.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@mokevnin
mokevnin merged commit 872212d into main Aug 11, 2026
1 check passed
@mokevnin
mokevnin deleted the chore/standards branch August 11, 2026 19:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant