Skip to content

fix(config-lerna-scopes): remove deprecated @lerna/project dependency #4284

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

janbiasi
Copy link
Contributor

@janbiasi janbiasi commented Feb 16, 2025

Prerequisites

Description

Please see the long explanation in #4262

Motivation and Context

Solves vulnerability issues and removes deprecated peer dependency requirement.

Usage examples

No changes

How Has This Been Tested?

Unit tests within the project

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

Copy link

codesandbox-ci bot commented Feb 16, 2025

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

@escapedcat
Copy link
Member

Is this a breaking change for anyone who is using lerna below v8?

@janbiasi
Copy link
Contributor Author

janbiasi commented Feb 18, 2025

Is this a breaking change for anyone who is using lerna below v8?

Yes, it will be a breaking change for lerna < 8.2.0 - I've added the necessary commit body in 22f0930

edit: sadly it's < 8.2.0 as the change within lerna was required

@janbiasi
Copy link
Contributor Author

@escapedcat By looking at the current config-pnpm-scopes implementation, I thought that I could copy it's implementation and adapt it to the lerna config schema. This way, we could support all lerna repositories which have the packages defined within lerna.json and wouldn't need to rely on the lerna package itself (= no breaking change). Additionally, we could implement an error if we detect no packages configuration and inform the user to use config-workspace-scopes in that case.

Would this be a better option? Let me know what you think.

@escapedcat
Copy link
Member

tbh I don't mind a breaking change. On the other hand it has 26k weekly downloads. So people might still use it with an older lerna version? If that's feasible and not too much work for you.

@janbiasi janbiasi force-pushed the fix/update-config-lerna-scopes branch 3 times, most recently from f412600 to f88e039 Compare February 26, 2025 07:32
@janbiasi janbiasi marked this pull request as ready for review February 26, 2025 07:50
@janbiasi janbiasi force-pushed the fix/update-config-lerna-scopes branch 3 times, most recently from 2deda6d to f265215 Compare February 28, 2025 01:27
@janbiasi
Copy link
Contributor Author

@escapedcat the PR is ready for review and now contains full backwards compatibility with an informational hint that users who are actively using native workspaces should transition to the previously introduced @commitlint/config-workspace-scopes package, but we still resolve the packages via the other config plugin. This means we could drop the support in a later stage 😄

I also updated the documentation to reflect the change and include the hint as well.

@escapedcat
Copy link
Member

Thanks @janbiasi ! Amazing work
One more rebase please :)

@janbiasi janbiasi force-pushed the fix/update-config-lerna-scopes branch from f265215 to 7a6902f Compare March 4, 2025 18:47
@janbiasi
Copy link
Contributor Author

janbiasi commented Mar 4, 2025

@escapedcat done :)

@escapedcat escapedcat merged commit f2f78f1 into conventional-changelog:master Mar 5, 2025
7 checks passed
@escapedcat
Copy link
Member

Running into an issue that I think I've seen before when I tried to update lerna.

You got any idea how to solve this?

Using node 18.20.7 locally

yarn run publish
yarn run v1.22.22
$ lerna publish --conventional-commits
lerna notice cli v8.2.1
lerna ERR!     MultipleProjectsWithSameNameError: The following projects are defined in multiple locations:
lerna ERR!   - a:
lerna ERR!     - @commitlint/config-nx-scopes/fixtures/basic/nx/a
lerna ERR!     - nx/a
lerna ERR!   - b:
lerna ERR!     - @commitlint/config-nx-scopes/fixtures/basic/nx/b
lerna ERR!     - nx/b
lerna ERR!   - c:
lerna ERR!     - @commitlint/config-nx-scopes/fixtures/nx14/nx/c
lerna ERR!     - nx/c
lerna ERR!   - d:
lerna ERR!     - @commitlint/config-nx-scopes/fixtures/nx14/nx/d
lerna ERR!     - nx/d
lerna ERR!   - e:
lerna ERR!     - @commitlint/config-nx-scopes/fixtures/nx15/nx/e
lerna ERR!     - nx/e
lerna ERR!   - f:
lerna ERR!     - @commitlint/config-nx-scopes/fixtures/nx15/nx/f
lerna ERR!     - nx/f
lerna ERR!   - g:
lerna ERR!     - @commitlint/config-nx-scopes/fixtures/nx17/nx/g
lerna ERR!     - nx/g
lerna ERR!   - h:
lerna ERR!     - @commitlint/config-nx-scopes/fixtures/nx17/nx/h
lerna ERR!     - nx/h
lerna ERR!
lerna ERR!   To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
lerna ERR!       at validateAndNormalizeProjectRootMap (/Users/user/data/src/commitlint/node_modules/nx/src/project-graph/utils/project-configuration-utils.js:455:15)
lerna ERR!       at mergeCreateNodesResults (/Users/user/data/src/commitlint/node_modules/nx/src/project-graph/utils/project-configuration-utils.js:341:9)
lerna ERR!       at /Users/user/data/src/commitlint/node_modules/nx/src/project-graph/utils/project-configuration-utils.js:285:85
lerna ERR!       at async buildProjectGraphAndSourceMapsWithoutDaemon (/Users/user/data/src/commitlint/node_modules/nx/src/project-graph/project-graph.js:87:31)
lerna ERR!       at async createProjectGraphAndSourceMapsAsync (/Users/user/data/src/commitlint/node_modules/nx/src/project-graph/project-graph.js:271:25)
lerna ERR!       at async createProjectGraphAsync (/Users/user/data/src/commitlint/node_modules/nx/src/project-graph/project-graph.js:219:39)
lerna ERR!       at async detectProjects (/Users/user/data/src/commitlint/node_modules/lerna/dist/index.js:3000:25)
lerna ERR! lerna Failed to process project graph.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

@janbiasi
Copy link
Contributor Author

janbiasi commented Mar 5, 2025

@escapedcat I'm not too familiar with NX, but it seems like that the fixtures are duplicated packages in terms of how NX resolves or identifies packages (via nx config file and package.json).

You could try to disable nx usage within the lerna.json, but the better way would be to ignore any fixtures packages in the root repository. I'll also take a look at this issue later this week.

@escapedcat
Copy link
Member

No worries, not in a rush here. Could also tag the nx related person in here.
Would be nice if you can a look if you find time.

@janbiasi
Copy link
Contributor Author

janbiasi commented Mar 7, 2025

@escapedcat I think I found a solution, but I'm not 100% sure if it doesn't brick something else; if we add an .nxignore file in the project root it can exclude the fixtures, like this:

# Having fixtures with a package.json and project.json leads to a duplicate package resolution issue.
# see https://github.com/nrwl/nx/issues/20959
@commitlint/*/fixtures/**

Tested the change with npx nx show projects, it also seems that all tests are still passing 😸

Relates to nrwl/nx#20959

@escapedcat
Copy link
Member

You mean like this?
#4313

@janbiasi
Copy link
Contributor Author

janbiasi commented Mar 7, 2025

You mean like this? #4313

@escapedcat Yes, looks good to me :)

@escapedcat
Copy link
Member

https://github.com/conventional-changelog/commitlint/releases/tag/v19.8.0

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