Back to Biomejs

noDuplicateDependencies

src/content/docs/linter/rules/no-duplicate-dependencies.mdx

latest2.8 KB
Original Source

import { Tabs, TabItem } from '@astrojs/starlight/components';

<Tabs> <TabItem label="JSON (and super languages)" icon="seti:json"> ## Summary - Rule available since: `v2.2.4` - Diagnostic Category: [`lint/suspicious/noDuplicateDependencies`](/reference/diagnostics#diagnostic-category) - This rule isn't recommended, so you need to enable it. - This rule doesn't have a fix. - The default severity of this rule is [**warning**](/reference/diagnostics#warning). - Sources: - Same as [`package-json/unique-dependencies`](https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/blob/main/docs/rules/unique-dependencies.md) - Same as [`package-json-dependencies/duplicate-dependencies`](https://github.com/idan-at/eslint-plugin-package-json-dependencies/blob/master/docs/rules/duplicate-dependencies.md)

How to configure

json
{
	"linter": {
		"rules": {
			"suspicious": {
				"noDuplicateDependencies": "error"
			}
		}
	}
}

Description

Prevent the listing of duplicate dependencies. The rule supports the following dependency groups: "bundledDependencies", "bundleDependencies", "dependencies", "devDependencies", "overrides", "optionalDependencies", and "peerDependencies".

Dependencies are not allowed to be listed twice under the same dependency group.

Examples

Invalid

json
{
    "dependencies": {
        "foo": "1.0.0",
        "foo": "2.0.0"
    }
}
json
{
    "bundleDependencies": ["foo", "foo"]
}

Valid

json
{
    "dependencies": {
        "foo": "2.0.0"
    }
}
json
{
    "bundleDependencies": ["foo"]
}

Some dependency group dependencies are checked against other dependency groups;

  • Dependencies listed in "dependencies" cannot be listed under "devDependencies", "optionalDependencies" or "peerDependencies".
  • Dependencies listed in "optionalDependencies" cannot be listed under "peerDependencies" (and vice versa).

Dependencies listed in "devDependencies" are allowed to be listed in "optionalDependencies" or "peerDependencies". And dependencies listed in "overrides" & "bundleDependencies" are not checked against other dependency groups.

Examples

Invalid

json
{
    "dependencies": {
        "foo": "1.0.0"
    },
    "devDependencies": {
        "foo": "1.0.0"
    }
}

Valid

json
{
    "dependencies": {
        "foo": "1.0.0"
    }
}
</TabItem> </Tabs>