Skip to content

fix(load): only resolve relative formatter paths#4761

Merged
escapedcat merged 2 commits into
masterfrom
fix/load-formatter-resolution
May 12, 2026
Merged

fix(load): only resolve relative formatter paths#4761
escapedcat merged 2 commits into
masterfrom
fix/load-formatter-resolution

Conversation

@escapedcat

Copy link
Copy Markdown
Member

resolveFrom() returns an absolute path on success, which leaks the internal package location into the loaded config when the formatter is a package specifier (e.g. "@commitlint/format"). Under yarn's flat node_modules layout the resolution typically failed and the specifier was preserved by accident; under stricter resolution (pnpm, npm with hoisting disabled) it succeeds and the absolute path appears in config output.

Skip resolveFrom for non-relative specifiers and let the runtime resolve them via standard module resolution at import time.

resolveFrom() returns an absolute path on success, which leaks the
internal package location into the loaded config when the formatter
is a package specifier (e.g. "@commitlint/format"). Under yarn's
flat node_modules layout the resolution typically failed and the
specifier was preserved by accident; under stricter resolution
(pnpm, npm with hoisting disabled) it succeeds and the absolute
path appears in config output.

Skip resolveFrom for non-relative specifiers and let the runtime
resolve them via standard module resolution at import time.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@qodo-code-review

Copy link
Copy Markdown
ⓘ You've reached your Qodo monthly free-tier limit. Reviews pause until next month — upgrade your plan to continue now, or link your paid account if you already have one.

@escapedcat escapedcat requested a review from Copilot May 12, 2026 11:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates @commitlint/load to avoid resolving formatter package specifiers into absolute filesystem paths, preventing internal package locations from appearing in printed/loaded config output across different package manager layouts (e.g., pnpm/non-hoisted npm).

Changes:

  • Skip resolveFrom() for non-relative formatter specifiers and keep them unchanged.
  • Continue resolving only relative formatter paths from the config directory.
  • Update the inline documentation for the formatter resolution behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread @commitlint/load/src/load.ts Outdated
Address review feedback: the previous wording "relative/custom" was
misleading because absolute paths and package specifiers both skip
resolveFrom and pass through unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@escapedcat escapedcat merged commit f8be069 into master May 12, 2026
15 checks passed
@escapedcat escapedcat deleted the fix/load-formatter-resolution branch May 12, 2026 12:10
pat-s pushed a commit to devxygmbh/ansible-data-science-core that referenced this pull request May 14, 2026
…ocker tag to v21 (#88)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [cr.codefloe.com/docker.io/commitlint/commitlint](https://github.com/conventional-changelog/commitlint) | major | `20.5.3` → `21.0.1` |

---

### Release Notes

<details>
<summary>conventional-changelog/commitlint (cr.codefloe.com/docker.io/commitlint/commitlint)</summary>

### [`v21.0.1`](https://github.com/conventional-changelog/commitlint/blob/HEAD/CHANGELOG.md#2101-2026-05-12)

[Compare Source](conventional-changelog/commitlint@v21.0.0...v21.0.1)

##### Bug Fixes

- **load:** only resolve relative formatter paths ([#&#8203;4761](conventional-changelog/commitlint#4761)) ([f8be069](conventional-changelog/commitlint@f8be069))
- **types:** add presetConfig to ParserPreset interface ([#&#8203;4749](conventional-changelog/commitlint#4749)) ([e402cd4](conventional-changelog/commitlint@e402cd4)), closes [#&#8203;4748](conventional-changelog/commitlint#4748)

### [`v21.0.0`](https://github.com/conventional-changelog/commitlint/blob/HEAD/CHANGELOG.md#2100-2026-05-08)

[Compare Source](conventional-changelog/commitlint@v20.5.3...v21.0.0)

##### Bug Fixes

- widen cz-commitlint inquirer peer dep to support v9-v12 [#&#8203;4554](conventional-changelog/commitlint#4554) ([#&#8203;4682](conventional-changelog/commitlint#4682)) ([341f0c4](conventional-changelog/commitlint@341f0c4))

- chore!: minimum node version v22 ([#&#8203;4679](conventional-changelog/commitlint#4679)) ([ac2b3f4](conventional-changelog/commitlint@ac2b3f4)), closes [#&#8203;4679](conventional-changelog/commitlint#4679)

##### BREAKING CHANGES

- drop node v18 and v20 support

* Bump engines to >=v22 in all 39 package.json files
* Update [@&#8203;types/node](https://github.com/types/node) to ^22.0.0
* Update CI matrix to \[22, 24]
* Update Ubuntu baseline job to ubuntu:26.04
* Update Dockerfile.ci, .mise.toml, .codesandbox/ci.json
* Update pre-commit hook to use --ignore-engines
* Update README and docs

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

#### [20.5.3](conventional-changelog/commitlint@v20.5.2...v20.5.3) (2026-04-30)

**Note:** Version bump only for package [@&#8203;commitlint/root](https://github.com/commitlint/root)

#### [20.5.2](conventional-changelog/commitlint@v20.5.1...v20.5.2) (2026-04-25)

##### Bug Fixes

- update dependency global-directory to v5 ([#&#8203;4698](conventional-changelog/commitlint#4698)) ([a8b6224](conventional-changelog/commitlint@a8b6224))

#### [20.5.1](conventional-changelog/commitlint@v20.5.0...v20.5.1) (2026-03-31)

##### Bug Fixes

- **cz-commitlint:** add VS16 to single character emojis ([#&#8203;4666](conventional-changelog/commitlint#4666)) ([9e3e2d3](conventional-changelog/commitlint@9e3e2d3))
- **cz-commitlint:** handle modifiers correctly ([#&#8203;4667](conventional-changelog/commitlint#4667)) ([5a3ebf5](conventional-changelog/commitlint@5a3ebf5))
- update dependency global-directory to v5 ([#&#8203;4671](conventional-changelog/commitlint#4671)) ([a300d32](conventional-changelog/commitlint@a300d32))

##### Reverts

- Revert "fix: update dependency global-directory to v5 ([#&#8203;4671](conventional-changelog/commitlint#4671))" ([#&#8203;4677](conventional-changelog/commitlint#4677)) ([0f124c9](conventional-changelog/commitlint@0f124c9)), closes [#&#8203;4671](conventional-changelog/commitlint#4671) [#&#8203;4677](conventional-changelog/commitlint#4677)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4zMS4wIiwidXBkYXRlZEluVmVyIjoiNDMuMzEuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: devxy-bot <no-reply@devxy.io>
Reviewed-on: https://codefloe.com/devxy/ansible-data-science-core/pulls/88
pat-s pushed a commit to devxygmbh/starlight-theme-celestia that referenced this pull request May 26, 2026
…ocker tag to v21 (#16)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [cr.codefloe.com/docker.io/commitlint/commitlint](https://github.com/conventional-changelog/commitlint) | major | `20.5.3` → `21.0.1` |

---

### Release Notes

<details>
<summary>conventional-changelog/commitlint (cr.codefloe.com/docker.io/commitlint/commitlint)</summary>

### [`v21.0.1`](https://github.com/conventional-changelog/commitlint/blob/HEAD/CHANGELOG.md#2101-2026-05-12)

[Compare Source](conventional-changelog/commitlint@v21.0.0...v21.0.1)

##### Bug Fixes

- **load:** only resolve relative formatter paths ([#&#8203;4761](conventional-changelog/commitlint#4761)) ([f8be069](conventional-changelog/commitlint@f8be069))
- **types:** add presetConfig to ParserPreset interface ([#&#8203;4749](conventional-changelog/commitlint#4749)) ([e402cd4](conventional-changelog/commitlint@e402cd4)), closes [#&#8203;4748](conventional-changelog/commitlint#4748)

### [`v21.0.0`](https://github.com/conventional-changelog/commitlint/blob/HEAD/CHANGELOG.md#2100-2026-05-08)

[Compare Source](conventional-changelog/commitlint@v20.5.3...v21.0.0)

##### Bug Fixes

- widen cz-commitlint inquirer peer dep to support v9-v12 [#&#8203;4554](conventional-changelog/commitlint#4554) ([#&#8203;4682](conventional-changelog/commitlint#4682)) ([341f0c4](conventional-changelog/commitlint@341f0c4))

- chore!: minimum node version v22 ([#&#8203;4679](conventional-changelog/commitlint#4679)) ([ac2b3f4](conventional-changelog/commitlint@ac2b3f4)), closes [#&#8203;4679](conventional-changelog/commitlint#4679)

##### BREAKING CHANGES

- drop node v18 and v20 support

* Bump engines to >=v22 in all 39 package.json files
* Update [@&#8203;types/node](https://github.com/types/node) to ^22.0.0
* Update CI matrix to \[22, 24]
* Update Ubuntu baseline job to ubuntu:26.04
* Update Dockerfile.ci, .mise.toml, .codesandbox/ci.json
* Update pre-commit hook to use --ignore-engines
* Update README and docs

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

#### [20.5.3](conventional-changelog/commitlint@v20.5.2...v20.5.3) (2026-04-30)

**Note:** Version bump only for package [@&#8203;commitlint/root](https://github.com/commitlint/root)

#### [20.5.2](conventional-changelog/commitlint@v20.5.1...v20.5.2) (2026-04-25)

##### Bug Fixes

- update dependency global-directory to v5 ([#&#8203;4698](conventional-changelog/commitlint#4698)) ([a8b6224](conventional-changelog/commitlint@a8b6224))

#### [20.5.1](conventional-changelog/commitlint@v20.5.0...v20.5.1) (2026-03-31)

##### Bug Fixes

- **cz-commitlint:** add VS16 to single character emojis ([#&#8203;4666](conventional-changelog/commitlint#4666)) ([9e3e2d3](conventional-changelog/commitlint@9e3e2d3))
- **cz-commitlint:** handle modifiers correctly ([#&#8203;4667](conventional-changelog/commitlint#4667)) ([5a3ebf5](conventional-changelog/commitlint@5a3ebf5))
- update dependency global-directory to v5 ([#&#8203;4671](conventional-changelog/commitlint#4671)) ([a300d32](conventional-changelog/commitlint@a300d32))

##### Reverts

- Revert "fix: update dependency global-directory to v5 ([#&#8203;4671](conventional-changelog/commitlint#4671))" ([#&#8203;4677](conventional-changelog/commitlint#4677)) ([0f124c9](conventional-changelog/commitlint@0f124c9)), closes [#&#8203;4671](conventional-changelog/commitlint#4671) [#&#8203;4677](conventional-changelog/commitlint#4677)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4zMS4wIiwidXBkYXRlZEluVmVyIjoiNDMuMzEuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: devxy-bot <no-reply@devxy.io>
Reviewed-on: https://codefloe.com/devxy/starlight-theme-celestia/pulls/16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants