commitizen / cz-cli

The commitizen command line utility. #BlackLivesMatter
http://commitizen.github.io/cz-cli/
MIT License
16.83k stars 551 forks source link

Enable usage in monorepos #782

Open levino opened 4 years ago

levino commented 4 years ago

In a monorepo setup (like with yarn workspaces) it is not possible to install commitizen at the root and then use it in the packages. Being in a folder like packages/package-1 with its own package.json an running yarn cz will result in the fallback "just commit" mode, even though it it properly configured in the root. This is because cz looks for a configuration in the next available package.json or .czrc. If it finds any of these files it seems to stop with an error and the defaulting to commit instead of going up the ladder to the next higher package.json and finding its configuration.

A workaround is to copy-paste the config in all the package.jsons but there is no reason for this strange behaviour.

pmcelhaney commented 2 years ago

The best way to fix this is probably to use cosmiconfig (#773)

saxoncameron commented 2 years ago

+1 for this! I'm just configuring a monorepo at the moment, and currently this restriction means I always have to run cz from the monorepo root, rather than anywhere within the monorepo. Considering I'm often cd'd into one of the packages/* in my terminal, this is a minor inconvenience.

I have a .czrc config in the monorepo root, so it'd be cool if Commitizen recognised that, or if the .czrc file supported an extends parameter so I could put a .czrc file in each package directory that points back to the root ../../.czrc for centralisation sake.

A cleaner solution would maybe be some magic in the CLI tool that looks for a .czrc in root of the .git folder though, maybe?

Ne-Ne commented 2 years ago

Support for this would be awesome 🙏🏻