Skip to content

chore: migrate to pnpm and oxlint/oxfmt - #12

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

chore: migrate to pnpm and oxlint/oxfmt#12
mokevnin merged 5 commits into
mainfrom
chore/standards

Conversation

@mokevnin

Copy link
Copy Markdown
Contributor

Brings the repository in line with the Hexlet-wide toolchain.

  • pnpm replaces npm.
  • oxlint + oxfmt replace biome, with all 12 oxlint plugins enabled explicitly (by default only typescript, unicorn and oxc load).
  • PR title lint and a standardised dependabot config.

No release-please here: nothing in this repository is published, so there is no version to track and a CHANGELOG would have no reader. Node CI therefore keeps running on main too, since no release workflow checks main instead.

Commits are split so the diff stays readable.

mokevnin and others added 5 commits August 11, 2026 16:07
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>
Node CI keeps running on main as well as on pull requests: this repository
publishes nothing, so there is no release workflow to check main instead.

release-please is deliberately absent. Nothing here is published, so there is
no version to track and CHANGELOG.md would have no reader.

dependabot sets commit-message.prefix: chore so its PRs pass the title lint.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
test/routes/root.test.js consisted of three imports and the whole test body
commented out, so the file asserted nothing while looking like coverage. The
test is restored and passes.

The remaining unused imports (User in UserValidator, fileURLToPath in the test
helper) are removed. All of it was reported by oxlint as no-unused-vars.
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>
CI runs make install, make lint and make test. A missing target aborts with
'No rule to make target', which reads as a broken build rather than as a
Makefile that spells the target differently (setup instead of install,
lint-frontend instead of lint).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@mokevnin
mokevnin merged commit 89e13e9 into main Aug 11, 2026
1 check passed
@mokevnin
mokevnin deleted the chore/standards branch August 11, 2026 20:17
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