Skip to content

Versioning & upgrades ​

The policy ​

This package follows semver, with one team-specific convention about what counts as "breaking":

ChangeVersion bump
Adding a new rule, or making an existing rule stricterminor
Upgrading a bundled plugin (patch/minor)minor
Bug fix in the config or CLIpatch
Removing a stack, renaming a flag, dropping a Node version, or a bundled-plugin major upgrade with broad rule changesmajor

The important consequence: a new rule is a minor bump, not a major one. Projects pin with a caret (^1) and upgrade deliberately. When an upgrade surfaces new lint errors, that is intended — the new rule found a real issue. It is not a regression.

json
{
  "devDependencies": {
    "eslint-config-mocg": "^2.2.0"
  }
}

2.0 — TypeScript & build-based distribution ​

2.0 ports the package to TypeScript and ships a compiled dist/ (with .d.ts). The public API was unchanged at 2.0, but how you install changes, which is why it's a major bump:

  • Prefer the published registry package (prebuilt, no install-time build).
  • git+ssh installs keep working: the prepare script compiles dist/ on install.
  • The package now ships consumer-facing types — mocg(options) is fully typed.

2.2.0 — package & umbrella rename ​

2.2.0 renames the package to eslint-config-mocg and the umbrella export to mocg(). The subpath import names are unchanged (/node, /react, /next, …). Update your eslint.config.mjs to import mocg from eslint-config-mocg and call mocg() in place of the old moc().

Renaming the package and the umbrella export is normally a major change under the policy above. It ships as a minor 2.2.0 only because this package had never been published to npm under any name — there is no released version and no live consumer to break, so 2.2.0 is the first npm release rather than a 3.0.0 break of an existing one.

Upgrading a project ​

bash
npm update eslint-config-mocg
npm run lint

If new violations appear:

  • A few? Fix them, or autofix with npm run lint:fix.
  • A lot? Baseline them and ratchet down — exactly the legacy-adoption flow. New standards land green; you clean up over time.

Node support ​

The floor is Node 22. We do not hold plugin versions back to support older runtimes — if a project is on an older Node, upgrade Node. This keeps the config on current, maintained plugin majors.

How releases stay honest ​

Every change is validated against fixture projects (Node, React, Vue, Nest) by running the real ESLint binary and snapshotting which rules fire, plus --print-config snapshots of the resolved config. A diff in those snapshots is what tells us whether a release is a patch, a minor, or a breaking change — the policy above is enforced by tests, not by memory. See Contributing.

Internal tooling — Master of Code Global