cz-cli icon indicating copy to clipboard operation
cz-cli copied to clipboard

Enable usage in monorepos

Open levino opened this issue 5 years ago • 3 comments

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.

levino avatar Sep 17 '20 09:09 levino

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

pmcelhaney avatar Nov 22 '21 20:11 pmcelhaney

+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?

saxoncameron avatar Jul 28 '22 07:07 saxoncameron

Support for this would be awesome 🙏🏻

Ne-Ne avatar Aug 19 '22 17:08 Ne-Ne