Skip to content

Lerna v4 uses named imports #2452

Closed
Closed
@johngnapp

Description

@johngnapp

After upgrading my project to use Lerna v4.0.0, I can no longer run commitlint.

Expected Behavior

Commit checks should run as usual when using Lerna v4.0.0

Current Behavior

Commitlint blows up when running the commit hooks. The following error occurs in @commitlint\config-lerna-scopes\index.js:47:20 - "TypeError: Project is not a constructor".

Affected packages

  • config-lerna-scopes

Possible Solution

Add another check for lerna version in the getPackages function:

const lernaVersion = getLernaVersion(cwd);
if (semver.lt(lernaVersion, '3.0.0')) {
	const Repository = importFrom(cwd, 'lerna/lib/Repository');
	const PackageUtilities = importFrom(cwd, 'lerna/lib/PackageUtilities');

	const repository = new Repository(cwd);
	return PackageUtilities.getPackages({
		packageConfigs: repository.packageConfigs,
		rootPath: cwd,
	});
}

// New check for less than v4.0.0
if (semver.lt(lernaVersion, '4.0.0')) {
	const Project = importFrom(cwd, '@lerna/project');
	const project = new Project(cwd);
	return project.getPackages();
}

const { getPackages } = importFrom(cwd, '@lerna/project');
return getPackages();

Steps to Reproduce (for bugs)

  1. First step - upgrade solution to use Lerna v4.0.0
  2. Second step - run pre-commit checks

Context

This issue prevents me from running pre-commit checks, so I can only commit code by skipping the checks with the --no-verify flag.

Your Environment

Executable Version
commitlint --version @commitlint/cli@12.0.0
git --version git version 2.29.2.windows.2
node --version v14.15.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions