require-fields

July 13, 2026 ยท View on GitHub

๐Ÿ“ Require specific fields to be present, always or only for published packages.

๐Ÿ’ผ This rule is enabled in the โœ… recommended config.

Ensures that specific top-level fields are present in package.json, either unconditionally or only when the package can be published (not marked "private": true).

  • fields (default []) are required in every package.json, public or private.
  • fieldsWhenPublic (default ['name', 'version', 'description', 'license', 'keywords']) are only required for a package that can actually be published; a private package is exempt.

This is the complement of restrict-fields-when-private, which flags fields that are pointless on a private package.

Options

fields

Type: string[]
Default: []

The field names that must always be present at the top level.

{
	'package-json/require-fields': [
		'error', {
			fields: [
				'name',
				'version',
				'engines'
			]
		}
	]
}

fieldsWhenPublic

Type: string[]
Default: ['name', 'version', 'description', 'license', 'keywords']

The field names a public (non-private) package must declare.

Providing this option replaces the default list.

{
	'package-json/require-fields': [
		'error',
		{
			fieldsWhenPublic: [
				'name',
				'version',
				'description',
				'license',
				'keywords',
				'repository'
			]
		}
	]
}

Examples

// โŒ
{
	"name": "my-package"
}
// โœ…
{
	"name": "my-package",
	"version": "1.0.0",
	"license": "MIT",
	"keywords": ["cli"],
	"description": "โ€ฆ"
}
// โœ…
{
	"private": true
}