chore: address PR #5 review comments — replace cross-package relative imports, pin ESLint ecmaVersion=2023, simplify globs + ci(gha): set cache-dependency-path#6
Conversation
…alse; align root TS to ES2023
…22 baseline, JSON config rationale, and usage examples
…op unsupported package_json_file input
…xport from index.mjs; include config.mjs in package files
… prettier.config.mjs\n\nReplace cross-package relative import with '@mikecbrant/prettier-config' per PR #5 review (#5 (comment)).
…in eslint.config.mjs
…package-name imports; pin ecmaVersion=2023; simplify globs; export local ESLint config subpath\n\n- packages/eslint-config/prettier.config.mjs: import '@mikecbrant/prettier-config' instead of relative path\n- packages/prettier-config/eslint.config.mjs: re-export '@mikecbrant/eslint-config/eslint.config' (no FS paths)\n- packages/eslint-config/config.mjs: ecmaVersion 2023; collapse files globs to **/*.{js,mjs,jsx,ts,mts,tsx}\n- packages/eslint-config/package.json: add exports './eslint.config' and include file in published files\n- .github/workflows/release.yml: set cache-dependency-path: pnpm-lock.yaml for all setup-node steps\n- package.json/pnpm-lock.yaml: add workspace devDep on @mikecbrant/prettier-config for local Prettier config resolution\n- packages/prettier-config/package.json: add devDep on @mikecbrant/eslint-config for local ESLint config resolution
There was a problem hiding this comment.
- Lint performance:
@typescript-eslint/parseris applied to JS and TS; split overrides so JS stays on the default parser and TS uses the TS parser and resolver. - Workspace dependency robustness:
packages/eslint-configuses@mikecbrant/prettier-configlocally but doesn’t declare it as a devDependency; add it to avoid relying on root hoisting. - No other functional issues detected in the CI changes, export mappings, or config reorganizations.
Summary of changes
- CI: Added
cache-dependency-path: pnpm-lock.yamlto allactions/setup-nodesteps in.github/workflows/release.yml. - Monorepo config hygiene:
- Replaced cross-package relative imports with package-name imports across ESLint/Prettier configs.
- Introduced
packages/eslint-config/config.mjsand re-exported it fromindex.mjs; added localeslint.config.mjsfor that package. - Pinned ESLint
ecmaVersionto 2023 and simplified file globs. - Exposed
@mikecbrant/eslint-config/eslint.configvia package subpath export.
- Prettier config split into
config.mjswithindex.mjsre-export; added localeslint.config.mjsdelegating to the ESLint package’s subpath export. - Workspace deps: added
@mikecbrant/prettier-configto root devDependencies; added@mikecbrant/eslint-configas a devDependency in the Prettier config package.
packages/eslint-config/config.mjs
Outdated
| files: ['**/*.{js,mjs,jsx,ts,mts,tsx}'], | ||
| plugins: { | ||
| '@typescript-eslint': tsPlugin, | ||
| import: importPlugin, | ||
| unicorn: unicornPlugin, | ||
| 'unused-imports': unusedImports, | ||
| }, | ||
| languageOptions: { | ||
| ecmaVersion: 2023, | ||
| sourceType: 'module', | ||
| parser: tsParser, | ||
| parserOptions: { | ||
| // Enable type-aware rules without hardcoding absolute tsconfig paths | ||
| projectService: true, | ||
| }, | ||
| }, | ||
| settings: { | ||
| 'import/resolver': { | ||
| typescript: { alwaysTryTypes: true }, | ||
| }, | ||
| }, |
There was a problem hiding this comment.
Using @typescript-eslint/parser for all JS and TS files can slow linting and isn’t necessary for plain JS. It’s typically faster and clearer to apply the TS parser only to TS (.ts, .tsx, .mts) and keep JS (.js, .mjs, .jsx) on the default parser. This also lets you scope TS-only rules to TS files and keep resolver settings for TS where they’re actually needed.
Suggestion
Consider splitting the strict override into separate TS and JS blocks so only TS files use @typescript-eslint/parser and the TS resolver:
export default [
...xoTypeScript,
sonarjs.configs.recommended,
{
name: '@mikecbrant/eslint-config/strict-overrides:ts',
files: ['**/*.{ts,tsx,mts}'],
plugins: {
'@typescript-eslint': tsPlugin,
import: importPlugin,
unicorn: unicornPlugin,
'unused-imports': unusedImports,
},
languageOptions: {
ecmaVersion: 2023,
sourceType: 'module',
parser: tsParser,
parserOptions: { projectService: true },
},
settings: { 'import/resolver': { typescript: { alwaysTryTypes: true } } },
rules: { /* keep current strict + TS-specific rules here */ },
},
{
name: '@mikecbrant/eslint-config/strict-overrides:js',
files: ['**/*.{js,mjs,jsx}'],
languageOptions: { ecmaVersion: 2023, sourceType: 'module' },
plugins: { import: importPlugin, unicorn: unicornPlugin, 'unused-imports': unusedImports },
rules: { /* keep the non-TS rules here (import/order, max-lines-per-function, etc.) */ },
},
{ ignores: ['**/*.cjs', '**/*.cts'] },
]Reply with "@CharlieHelps yes please" if you'd like me to add a commit with this suggestion.
packages/eslint-config/package.json
Outdated
| "files": [ | ||
| "index.mjs", | ||
| "config.mjs", | ||
| "eslint.config.mjs", | ||
| "README.md" | ||
| ] |
There was a problem hiding this comment.
packages/eslint-config/prettier.config.mjs imports @mikecbrant/prettier-config, but @mikecbrant/eslint-config does not declare it as a devDependency. In a pnpm workspace, relying on the root to provide this dependency is brittle and can break local tooling resolution when running Prettier from the package directory. Declare the devDependency explicitly for robustness and symmetry with the Prettier package’s ESLint setup.
Suggestion
Add a devDependency on @mikecbrant/prettier-config in packages/eslint-config/package.json:
{
"devDependencies": {
"@mikecbrant/prettier-config": "workspace:*"
}
}If you want, I can add this change for you—reply with "@CharlieHelps yes please".
There was a problem hiding this comment.
- TS parser and resolver are applied to JS files in
packages/eslint-config/config.mjs, adding avoidable lint overhead and scoping TS-only rules to JS globs. Split overrides by language to improve performance and clarity. packages/eslint-configimports@mikecbrant/prettier-configwithout declaring it, which is brittle under pnpm workspaces; add it todevDependencies.- The local ESLint config in
packages/eslint-config/eslint.config.mjsonly matches root*.mjsfiles; use a recursive glob to avoid missed files. - Other changes (CI caching path, exports, config reshuffle) look good and consistent with the intended Node 22/ES2023 baseline.
Additional notes (1)
- Maintainability |
packages/eslint-config/eslint.config.mjs:8-9
The local flat config only matches*.mjsin the package root. If any.mjsfiles are added in subdirectories later, they won’t be linted. Prefer a recursive glob.
Summary of changes
- CI: Added
cache-dependency-path: pnpm-lock.yamlto allactions/setup-nodesteps in.github/workflows/release.ymland removed the unsupportedpackage_json_fileinput topnpm/action-setup. - Monorepo config hygiene:
- Introduced
packages/eslint-config/config.mjsand madeindex.mjsre-export it. - Added a local
packages/eslint-config/eslint.config.mjsfor JS-only linting of that package. - Replaced cross-package relative imports with package-name imports in ESLint/Prettier configs.
- Pinned ESLint
ecmaVersionto2023and simplified file globs. - Added
packages/eslint-config/prettier.config.mjsdelegating to@mikecbrant/prettier-config. - Exposed subpath export
@mikecbrant/eslint-config/eslint.configand included files in packageexports/files.
- Introduced
- Prettier package: split config to
config.mjs, re-exported fromindex.mjs, added localeslint.config.mjs, and documented single-quote/semi=false style. - Root: added workspace devDependency on
@mikecbrant/prettier-config; lockfile updated accordingly.
packages/eslint-config/config.mjs
Outdated
| files: ['**/*.{js,mjs,jsx,ts,mts,tsx}'], | ||
| plugins: { | ||
| '@typescript-eslint': tsPlugin, | ||
| import: importPlugin, | ||
| unicorn: unicornPlugin, | ||
| 'unused-imports': unusedImports, | ||
| }, | ||
| languageOptions: { | ||
| ecmaVersion: 2023, | ||
| sourceType: 'module', | ||
| parser: tsParser, | ||
| parserOptions: { | ||
| // Enable type-aware rules without hardcoding absolute tsconfig paths | ||
| projectService: true, | ||
| }, | ||
| }, | ||
| settings: { | ||
| 'import/resolver': { | ||
| typescript: { alwaysTryTypes: true }, | ||
| }, | ||
| }, |
There was a problem hiding this comment.
Using @typescript-eslint/parser for all JS and TS files adds overhead and applies TS-only rules to JS globs. This can slow linting and cause unnecessary rule evaluation on .js/.mjs/.jsx files. Split the strict overrides so TS files use the TS parser and resolver, while JS uses the default parser; also scope @typescript-eslint/* rules to TS-only.
Suggestion
Consider splitting the strict override into TS and JS blocks so only TS files use the TS parser and TypeScript resolver:
export default [
...xoTypeScript,
sonarjs.configs.recommended,
{
name: '@mikecbrant/eslint-config/strict-overrides:ts',
files: ['**/*.{ts,tsx,mts}'],
plugins: {
'@typescript-eslint': tsPlugin,
import: importPlugin,
unicorn: unicornPlugin,
'unused-imports': unusedImports,
},
languageOptions: {
ecmaVersion: 2023,
sourceType: 'module',
parser: tsParser,
parserOptions: { projectService: true },
},
settings: { 'import/resolver': { typescript: { alwaysTryTypes: true } } },
rules: {
'max-lines-per-function': ['error', { max: 60, skipComments: true, skipBlankLines: true }],
complexity: ['error', 10],
'max-depth': ['error', 3],
'max-params': ['error', 4],
'@typescript-eslint/consistent-type-imports': ['error', { prefer: 'type-imports', fixStyle: 'inline-type-imports' }],
'@typescript-eslint/no-floating-promises': 'error',
'import/no-duplicates': 'error',
'import/order': [
'error',
{ groups: [['builtin','external'],'internal','parent','sibling','index','object','type'], alphabetize: { order: 'asc', caseInsensitive: true }, 'newlines-between': 'always' }
],
'unused-imports/no-unused-imports': 'error',
'no-console': 'error',
'unicorn/prevent-abbreviations': 'off',
'unicorn/no-null': 'off',
},
},
{
name: '@mikecbrant/eslint-config/strict-overrides:js',
files: ['**/*.{js,mjs,jsx}'],
languageOptions: { ecmaVersion: 2023, sourceType: 'module' },
plugins: { import: importPlugin, unicorn: unicornPlugin, 'unused-imports': unusedImports },
rules: {
'max-lines-per-function': ['error', { max: 60, skipComments: true, skipBlankLines: true }],
complexity: ['error', 10],
'max-depth': ['error', 3],
'max-params': ['error', 4],
'import/no-duplicates': 'error',
'import/order': [
'error',
{ groups: [['builtin','external'],'internal','parent','sibling','index','object'], alphabetize: { order: 'asc', caseInsensitive: true }, 'newlines-between': 'always' }
],
'unused-imports/no-unused-imports': 'error',
'no-console': 'error',
'unicorn/prevent-abbreviations': 'off',
'unicorn/no-null': 'off',
},
},
{ ignores: ['**/*.cjs', '**/*.cts'] },
]If you'd like, I can open a follow-up commit to apply this change—reply with "@CharlieHelps yes please".
packages/eslint-config/package.json
Outdated
| "files": [ | ||
| "index.mjs", | ||
| "config.mjs", | ||
| "eslint.config.mjs", | ||
| "README.md" | ||
| ] |
There was a problem hiding this comment.
packages/eslint-config/prettier.config.mjs imports @mikecbrant/prettier-config, but this package does not declare it. In a pnpm workspace, relying on root hoisting is brittle. Declare it as a devDependency to ensure local Prettier resolution works when running tooling from this package directory.
Suggestion
Add a devDependency on the sibling Prettier config for robustness:
{
// ...
"devDependencies": {
"@mikecbrant/prettier-config": "workspace:*"
}
}I can add this change for you—reply with "@CharlieHelps yes please".
|
@CharlieHelps address |
Expand this to see my work.
|
…d preserve PR #6 intents (ecmaVersion=2023, simplified globs, subpath exports, CI cache path).
…ize quotes - Resolve merge conflicts from PR #6 while preserving intended config changes - Normalize package and dependency keys from single quotes to double quotes across snapshots - No dependency version changes or functional impact; lockfile formatting only - Ensures ESLint/TypeScript and Changesets config remains intact
|
Resolved the merge conflicts on PR #6 and preserved the PR’s intended changes. I merged the latest base (main @ ca97714) into the head branch and reconciled all conflicts, keeping the config follow‑ups from PR #5 intact. Changes are in 4c75482. Key confirmations (per PR scope)
What I did not change (out of scope per PR body)
Merged and reconciled files
Verification# Bring base up to date and merge
$ git fetch --all --prune
$ git merge --no-ff origin/main
# Resolved conflicts in 5 files (see list above)
# Install to refresh the lockfile after manifest changes
$ pnpm install
# Result: workspace install OK; lockfile updated
# Format and verify formatting
$ pnpm -w run fmt
# Result: pnpm-lock.yaml updated by Prettier
$ pnpm -w run fmt:check
# Result: All matched files use Prettier code style
# Typecheck (no TS sources in repo)
$ pnpm -w run typecheck:tsgo
# Result: tsgo: no-op (no TS sources in this repo)
# PR mergeability (GitHub)
# mergeable: MERGEABLE, mergeStateStatus: BLOCKED (pending reviews/checks)Re-requested review from @CharlieHelps and @mikecbrant and assigned the PR to @mikecbrant. If you’d prefer to avoid the devDependency cycle between the two config packages, I can open a follow-up to break it (not needed for this PR’s scope). |
There was a problem hiding this comment.
Overall the changes look solid: CI cache keying is correct for PNPM, subpath exports are well-formed, and workspace devDependencies now back local cross-package config usage. One improvement remains in packages/eslint-config/config.mjs: the single override still applies the TypeScript parser to JS files, which is unnecessary and can slow linting. Splitting JS/TS overrides would address this. No other functional or maintainability concerns were found in the modified code.
Summary of changes
-
CI
- In .github/workflows/release.yml, added
cache-dependency-path: pnpm-lock.yamlto allactions/setup-nodesteps to improve PNPM cache keying.
- In .github/workflows/release.yml, added
-
Monorepo root
- Added
@mikecbrant/prettier-configto rootdevDependenciesas aworkspace:*link.
- Added
-
ESLint config package (@mikecbrant/eslint-config)
- packages/eslint-config/config.mjs
- Simplified
filesglob to**/*.{js,mjs,jsx,ts,mts,tsx}(removed redundant**/*.d.ts). - Pinned
languageOptions.ecmaVersionfrom'latest'to2023.
- Simplified
- packages/eslint-config/package.json
- Exposed subpath export
"./eslint.config": "./eslint.config.mjs"and included it infiles. - Declared
devDependencies["@mikecbrant/prettier-config"] = "workspace:*"for local tooling resolution.
- Exposed subpath export
- packages/eslint-config/prettier.config.mjs
- Minor comment wording tweak; continues delegating to
@mikecbrant/prettier-config.
- Minor comment wording tweak; continues delegating to
- packages/eslint-config/config.mjs
-
Prettier config package (@mikecbrant/prettier-config)
- packages/prettier-config/eslint.config.mjs
- Now re-exports the sibling ESLint package via subpath
@mikecbrant/eslint-config/eslint.config.
- Now re-exports the sibling ESLint package via subpath
- packages/prettier-config/package.json
- Added
devDependencies["@mikecbrant/eslint-config"] = "workspace:*".
- Added
- packages/prettier-config/eslint.config.mjs
-
Lockfile
- pnpm-lock.yaml updated to reflect the above dependency/link changes and formatting adjustments.
packages/eslint-config/config.mjs
Outdated
| '**/*.tsx', | ||
| '**/*.d.ts', | ||
| ], | ||
| files: ['**/*.{js,mjs,jsx,ts,mts,tsx}'], |
There was a problem hiding this comment.
This override targets both JS and TS files while the block uses @typescript-eslint/parser (set in languageOptions). Applying the TS parser to JS files can slow linting and evaluates TS-only rules on .js/.mjs/.jsx. Splitting overrides by language improves performance and clarity by scoping the TS parser/resolver to TS globs only.
Suggestion
Consider splitting the strict override into two blocks: one for TS (**/*.{ts,tsx,mts}) that uses @typescript-eslint/parser and the TS import resolver, and one for JS (**/*.{js,mjs,jsx}) that keeps the default parser. This will reduce lint overhead and avoid applying TS-only rules to JS files. Reply with "@CharlieHelps yes please" if you'd like me to add a commit with this refactor.
mikecbrant
left a comment
There was a problem hiding this comment.
@CharlieHelps please address all or comments
packages/eslint-config/package.json
Outdated
| "exports": { | ||
| ".": "./index.mjs" | ||
| ".": "./index.mjs", | ||
| "./eslint.config": "./eslint.config.mjs" |
There was a problem hiding this comment.
Please remove this export. We want consumers to just use main index file.
| @@ -1,2 +1,2 @@ | |||
| // Delegate to the published Prettier config package by name to avoid cross-package relative paths. | |||
| // Delegate to the published Prettier config package to avoid cross-package relative paths. | |||
| @@ -1,2 +1,2 @@ | |||
| // Delegate to the published sibling package to avoid cross-package relative imports. | |||
| export { default } from '@mikecbrant/eslint-config' | |||
| // Import the sibling package's local flat config via package subpath export to avoid filesystem paths. | |||
| // Delegate to the published sibling package to avoid cross-package relative imports. | ||
| export { default } from '@mikecbrant/eslint-config' | ||
| // Import the sibling package's local flat config via package subpath export to avoid filesystem paths. | ||
| export { default } from '@mikecbrant/eslint-config/eslint.config' |
There was a problem hiding this comment.
Just import from main index file
Expand this to see my work.
|
… prettier-config ESLint import to package root\n\n- packages/eslint-config/package.json: drop exports['./eslint.config'] per PR #6 review\n- packages/eslint-config/prettier.config.mjs: remove leading comment\n- packages/prettier-config/eslint.config.mjs: remove leading comment and import from '@mikecbrant/eslint-config' (not subpath)\n\nScope: address CHANGES_REQUESTED by @mikecbrant on 2025-09-02
|
Implemented the three CHANGES_REQUESTED items on PR #6. Changes pushed in 0791c45. Changes
Verification# Install to ensure workspace links are correct for Prettier config imports
$ pnpm install
# Result: workspace install OK
# Formatting check: all files clean
$ pnpm -w run fmt:check
# Result: All matched files use Prettier code style
# Typecheck (this repo has no TS sources; script is a no-op)
$ pnpm -w run typecheck:tsgo
# Result: tsgo: no-op (no TS sources in this repo)
# Build (noop)
$ pnpm -w run build
# Result: noop
Self review
Re-requested review from @CharlieHelps and @mikecbrant. |
There was a problem hiding this comment.
Overall changes are solid and align with the intended Node 22/ES2023 baseline and monorepo hygiene. One performance issue remains: the ESLint strict override applies the TypeScript parser to JS globs, which slows linting and mis-scopes TS-only rules. Split the override into JS and TS blocks to scope the TS parser/resolver to TS files only. No other issues found in the CI cache adjustments, dependency declarations, or config re-exports.
Summary of changes
- CI: Added
cache-dependency-path: pnpm-lock.yamlto allactions/setup-nodesteps in.github/workflows/release.yml. - Root: Added
@mikecbrant/prettier-configas adevDependencyinpackage.json. - ESLint config package (
packages/eslint-config):- Simplified
filesglob inconfig.mjsto**/*.{js,mjs,jsx,ts,mts,tsx}and pinnedecmaVersionto2023. - Added
eslint.config.mjsto the publishedfilesand declared adevDependencyon@mikecbrant/prettier-config. - Removed a top-of-file comment in
prettier.config.mjs.
- Simplified
- Prettier config package (
packages/prettier-config):- Switched
eslint.config.mjsto import from@mikecbrant/eslint-config(main entry) and removed the comment. - Declared a
devDependencyon@mikecbrant/eslint-config.
- Switched
- Lockfile: Updated to reflect the new workspace links and devDependencies.
packages/eslint-config/config.mjs
Outdated
| '**/*.tsx', | ||
| '**/*.d.ts', | ||
| ], | ||
| files: ['**/*.{js,mjs,jsx,ts,mts,tsx}'], |
There was a problem hiding this comment.
This override now targets both JS and TS files while the block uses the TypeScript parser and TS resolver. Applying @typescript-eslint/parser to *.{js,mjs,jsx} increases lint time and evaluates TS-only rules on JS files. Splitting overrides by language reduces overhead and improves rule scoping.
Suggestion
Split the strict override into separate TS and JS blocks so only TS files use the TS parser and resolver, while JS uses the default parser. Example:
export default [
...xoTypeScript,
sonarjs.configs.recommended,
{
name: '@mikecbrant/eslint-config/strict-overrides:ts',
files: ['**/*.{ts,tsx,mts}'],
plugins: {
'@typescript-eslint': tsPlugin,
import: importPlugin,
unicorn: unicornPlugin,
'unused-imports': unusedImports,
},
languageOptions: {
ecmaVersion: 2023,
sourceType: 'module',
parser: tsParser,
parserOptions: { projectService: true },
},
settings: { 'import/resolver': { typescript: { alwaysTryTypes: true } } },
},
{
name: '@mikecbrant/eslint-config/strict-overrides:js',
files: ['**/*.{js,mjs,jsx}'],
languageOptions: { ecmaVersion: 2023, sourceType: 'module' },
plugins: { import: importPlugin, unicorn: unicornPlugin, 'unused-imports': unusedImports },
},
]Reply with "@CharlieHelps yes please" if you'd like me to add a commit with this suggestion.
mikecbrant
left a comment
There was a problem hiding this comment.
@CharlieHelps please proceed with your suggested changes
Expand this to see my work.
|
…globs and enable JSX parsing for JS; make local eslint.config.mjs glob recursive (per PR #6 review)
|
Pushed the follow-up changes requested on PR #6 to scope the TS parser to TS files, make the local package ESLint globs recursive, and confirm the Prettier workspace devDependency. Changes
Changes are in commit Verification# Install to ensure workspace links are wired
$ pnpm install
# Result: workspace install OK
# Prettier (workspace)
$ pnpm -w run fmt:check
# Result: All matched files use Prettier code style
# ESLint (local package config only)
$ pnpm -C packages/eslint-config exec eslint . -f json | jq '{files: length, errors: (map(.errorCount)|add), warnings: (map(.warningCount)|add)}'
# Result: {"files":4,"errors":0,"warnings":0}
Re-requested review from @CharlieHelps and @mikecbrant. |
There was a problem hiding this comment.
- ESLint config duplication: TS and JS overrides repeat many of the same rules. Extracting common rules into a shared override (or constant) reduces drift and improves maintainability.
- JSX parsing scope: If JSX in
.js/.mjsisn’t a common target use case, consider limitingecmaFeatures.jsx: trueto*.jsxto avoid unnecessary JSX parsing. No functional or performance regressions detected otherwise; CI and workspace dependency changes look correct.
Additional notes (2)
-
Maintainability |
packages/eslint-config/config.mjs:102-137
Nice improvement splitting TS and JS overrides and scoping the TS parser/resolver to TS globs. There’s now noticeable duplication between the TS and JS blocks (shared thresholds likemax-lines-per-function,complexity,max-depth,max-params, import hygiene,no-console, and a couple of Unicorn toggles). This increases drift risk over time when changing a rule in one block but not the other. -
Readability |
packages/eslint-config/config.mjs:96-101
You enable JSX parsing for all JS globs, which is fine if consumers commonly use JSX in.js/.mjs. If JSX in plain.js/.mjsisn’t typical for your target projects, broad JSX parsing can be avoided to reduce subtle parsing differences in non-JSX JS files.
Summary of changes
- CI: Added
cache-dependency-path: pnpm-lock.yamlto allactions/setup-node@v4steps in.github/workflows/release.yml. - Root: Added
@mikecbrant/prettier-configas a workspacedevDependency. - ESLint config (@mikecbrant/eslint-config):
- Split a single strict override into TS-only and JS-only blocks; pinned
ecmaVersionto2023in both. - Scoped the TS parser and resolver to
**/*.{ts,tsx,mts}; enabled JSX parsing for JS files. - Made the local
eslint.config.mjsglob recursive (**/*.mjs). - Included
eslint.config.mjsin the publishedfilesand added a workspacedevDependencyon@mikecbrant/prettier-config.
- Split a single strict override into TS-only and JS-only blocks; pinned
- Prettier config (@mikecbrant/prettier-config):
- Switched local ESLint config to import from
@mikecbrant/eslint-configmain entry; removed leading comments. - Added a workspace
devDependencyon@mikecbrant/eslint-config.
- Switched local ESLint config to import from
- Lockfile: Updated to reflect new workspace links and dependencies.
This PR addresses all outstanding review comments on PR #5 (head sha: 00ca8d7) so it can be approved and merged.
Summary of changes
Replace cross-package relative imports with package-name imports
Pin ESLint language level to Node 22 baseline (ES2023)
Simplify ESLint files globs to remove redundancy
Improve PNPM caching robustness in CI
Verification
Notes
No breaking changes expected.