chore: ESLint config missing — pnpm lint is broken across the workspace #53

Open
opened 2026-06-13 22:03:03 +00:00 by padreug · 0 comments
Owner

Migrated from aiolabs/lamassu-next#53 — opened by @padreug on 2026-05-26.\n\n## Problem

Running pnpm --filter @bitSpire/lnbits run lint (and presumably every other workspace package's lint script) fails immediately:

ESLint: 10.2.0

ESLint couldn't find an eslint.config.(js|mjs|cjs) file.

From ESLint v9.0.0, the default configuration file is now eslint.config.js.
If you are using a .eslintrc.* file, please follow the migration guide
to update your configuration file to the new format

There is no eslint.config.js (or .eslintrc.*) at the workspace root, and no package-level config in packages/*/. The script "lint": "eslint src/" therefore does nothing useful — and worse, any lint failures across the workspace are currently invisible because the runner bombs on config-missing before evaluating any rules.

Why this matters

  • We can't actually catch lint regressions in CI or pre-commit.
  • New contributors running pnpm lint see a config-error rather than rule-violation feedback.
  • The package.json scripts advertise functionality that doesn't exist.

Fix shape

Two options:

  1. Land a real config. Add an eslint.config.js at the workspace root with a sensible TypeScript + Vue setup. Minimum recipe:

    import tseslint from 'typescript-eslint'
    import vueParser from 'vue-eslint-parser'
    
    export default tseslint.config(
      ...tseslint.configs.recommended,
      { files: ['**/*.vue'], languageOptions: { parser: vueParser } },
      // package-specific overrides as needed
    )
    

    Plus update package devDeps to include typescript-eslint + vue-eslint-parser if not already present.

  2. Remove the lint scripts entirely if we don't intend to use ESLint. (Probably the wrong call — TypeScript codebases this size benefit from lint enforcement.)

Discovered while

Working on aiolabs/lamassu-next#49 (reply signature verification). Ran pnpm --filter @bitSpire/lnbits run lint as a sanity check on my own patch, got the config-error.

Out of scope

  • Adding actual CI hooks for lint. Land a working config first; CI integration is separate.
  • Migrating to Biome or another linter — same outcome, different tool choice. Pick after #49 + #50 land.
> _Migrated from [aiolabs/lamassu-next#53](https://git.atitlan.io/aiolabs/lamassu-next/issues/53) — opened by @padreug on 2026-05-26._\n\n## Problem Running `pnpm --filter @bitSpire/lnbits run lint` (and presumably every other workspace package's lint script) fails immediately: ``` ESLint: 10.2.0 ESLint couldn't find an eslint.config.(js|mjs|cjs) file. From ESLint v9.0.0, the default configuration file is now eslint.config.js. If you are using a .eslintrc.* file, please follow the migration guide to update your configuration file to the new format ``` There is no `eslint.config.js` (or `.eslintrc.*`) at the workspace root, and no package-level config in `packages/*/`. The script `"lint": "eslint src/"` therefore does nothing useful — and worse, **any lint failures across the workspace are currently invisible** because the runner bombs on config-missing before evaluating any rules. ## Why this matters - We can't actually catch lint regressions in CI or pre-commit. - New contributors running `pnpm lint` see a config-error rather than rule-violation feedback. - The `package.json` scripts advertise functionality that doesn't exist. ## Fix shape Two options: 1. **Land a real config.** Add an `eslint.config.js` at the workspace root with a sensible TypeScript + Vue setup. Minimum recipe: ```js import tseslint from 'typescript-eslint' import vueParser from 'vue-eslint-parser' export default tseslint.config( ...tseslint.configs.recommended, { files: ['**/*.vue'], languageOptions: { parser: vueParser } }, // package-specific overrides as needed ) ``` Plus update package devDeps to include `typescript-eslint` + `vue-eslint-parser` if not already present. 2. **Remove the lint scripts entirely** if we don't intend to use ESLint. (Probably the wrong call — TypeScript codebases this size benefit from lint enforcement.) ## Discovered while Working on `aiolabs/lamassu-next#49` (reply signature verification). Ran `pnpm --filter @bitSpire/lnbits run lint` as a sanity check on my own patch, got the config-error. ## Out of scope - Adding actual CI hooks for lint. Land a working config first; CI integration is separate. - Migrating to Biome or another linter — same outcome, different tool choice. Pick after #49 + #50 land.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
aiolabs/bitspire#53
No description provided.