eslint-plugin-package-json 0.80.0 β 0.81.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -2
- package/README.md +64 -63
- package/lib/plugin.mjs +24 -22
- package/lib/rules/require-attribution.d.mts +17 -0
- package/lib/rules/require-attribution.mjs +71 -0
- package/lib/rules/require-properties.d.mts +1 -0
- package/lib/utils/createSimpleRequirePropertyRule.d.mts +1 -0
- package/lib/utils/createSimpleRequirePropertyRule.mjs +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
# [0.
|
|
3
|
+
# [0.81.0](https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/compare/v0.80.0...v0.81.0) (2025-11-17)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **require-attribution:** add new rule to require proper attribution ([#1408](https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/1408)) ([e646f94](https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commit/e646f941bfc8ac2e4cb7c28509a8bd800b912442)), closes [#1404](https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/1404)
|
|
4
9
|
|
|
10
|
+
# [0.80.0](https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/compare/v0.79.0...v0.80.0) (2025-11-17)
|
|
5
11
|
|
|
6
12
|
### Features
|
|
7
13
|
|
|
8
|
-
|
|
14
|
+
- **require-exports:** add new rule to require `exports` ([#1410](https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/1410)) ([c8fd152](https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commit/c8fd1525b4d25c4d1fbdb488a7a604037e352361)), closes [#1409](https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/1409)
|
|
9
15
|
|
|
10
16
|
# [0.79.0](https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/compare/v0.78.0...v0.79.0) (2025-11-15)
|
|
11
17
|
|
package/README.md
CHANGED
|
@@ -181,69 +181,70 @@ The default settings don't conflict, and Prettier plugins can quickly fix up ord
|
|
|
181
181
|
π‘ Manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions).\
|
|
182
182
|
β Deprecated.
|
|
183
183
|
|
|
184
|
-
| NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β | Description
|
|
185
|
-
| :------------------------------------------------------------------------- |
|
|
186
|
-
| [bin-name-casing](docs/rules/bin-name-casing.md) | Enforce that names for bin properties are in kebab case.
|
|
187
|
-
| [exports-subpaths-style](docs/rules/exports-subpaths-style.md) | Enforce consistent format for the exports field (implicit or explicit subpaths).
|
|
188
|
-
| [no-empty-fields](docs/rules/no-empty-fields.md) | Reports on unnecessary empty arrays and objects.
|
|
189
|
-
| [no-redundant-files](docs/rules/no-redundant-files.md) | Prevents adding unnecessary / redundant files.
|
|
190
|
-
| [no-redundant-publishConfig](docs/rules/no-redundant-publishConfig.md) | Warns when publishConfig.access is used in unscoped packages.
|
|
191
|
-
| [order-properties](docs/rules/order-properties.md) | Package properties must be declared in standard order
|
|
192
|
-
| [repository-shorthand](docs/rules/repository-shorthand.md) | Enforce either object or shorthand declaration for repository.
|
|
193
|
-
| [require-
|
|
194
|
-
| [require-
|
|
195
|
-
| [require-
|
|
196
|
-
| [require-
|
|
197
|
-
| [require-
|
|
198
|
-
| [require-
|
|
199
|
-
| [require-
|
|
200
|
-
| [require-
|
|
201
|
-
| [require-
|
|
202
|
-
| [require-
|
|
203
|
-
| [require-
|
|
204
|
-
| [require-
|
|
205
|
-
| [require-
|
|
206
|
-
| [require-
|
|
207
|
-
| [require-
|
|
208
|
-
| [require-
|
|
209
|
-
| [require-
|
|
210
|
-
| [
|
|
211
|
-
| [restrict-
|
|
212
|
-
| [
|
|
213
|
-
| [
|
|
214
|
-
| [
|
|
215
|
-
| [
|
|
216
|
-
| [valid-
|
|
217
|
-
| [valid-
|
|
218
|
-
| [valid-
|
|
219
|
-
| [valid-
|
|
220
|
-
| [valid-
|
|
221
|
-
| [valid-
|
|
222
|
-
| [valid-
|
|
223
|
-
| [valid-
|
|
224
|
-
| [valid-
|
|
225
|
-
| [valid-
|
|
226
|
-
| [valid-
|
|
227
|
-
| [valid-
|
|
228
|
-
| [valid-
|
|
229
|
-
| [valid-
|
|
230
|
-
| [valid-
|
|
231
|
-
| [valid-
|
|
232
|
-
| [valid-
|
|
233
|
-
| [valid-
|
|
234
|
-
| [valid-
|
|
235
|
-
| [valid-
|
|
236
|
-
| [valid-
|
|
237
|
-
| [valid-
|
|
238
|
-
| [valid-
|
|
239
|
-
| [valid-
|
|
240
|
-
| [valid-
|
|
241
|
-
| [valid-
|
|
242
|
-
| [valid-repository
|
|
243
|
-
| [valid-
|
|
244
|
-
| [valid-
|
|
245
|
-
| [valid-
|
|
246
|
-
| [valid-
|
|
184
|
+
| NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β | Description | πΌ | π§ | π‘ | β |
|
|
185
|
+
| :------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--- | :- | :- | :- |
|
|
186
|
+
| [bin-name-casing](docs/rules/bin-name-casing.md) | Enforce that names for bin properties are in kebab case. | π¨ | | π‘ | |
|
|
187
|
+
| [exports-subpaths-style](docs/rules/exports-subpaths-style.md) | Enforce consistent format for the exports field (implicit or explicit subpaths). | π¨ | π§ | | |
|
|
188
|
+
| [no-empty-fields](docs/rules/no-empty-fields.md) | Reports on unnecessary empty arrays and objects. | βοΈ β
| | π‘ | |
|
|
189
|
+
| [no-redundant-files](docs/rules/no-redundant-files.md) | Prevents adding unnecessary / redundant files. | βοΈ β
| | π‘ | |
|
|
190
|
+
| [no-redundant-publishConfig](docs/rules/no-redundant-publishConfig.md) | Warns when publishConfig.access is used in unscoped packages. | βοΈ β
| | π‘ | |
|
|
191
|
+
| [order-properties](docs/rules/order-properties.md) | Package properties must be declared in standard order | βοΈ β
| π§ | | |
|
|
192
|
+
| [repository-shorthand](docs/rules/repository-shorthand.md) | Enforce either object or shorthand declaration for repository. | βοΈ β
| π§ | | |
|
|
193
|
+
| [require-attribution](docs/rules/require-attribution.md) | Ensures that proper attribution is included, requiring that either `author` or `contributors` is defined, and that if `contributors` is present, it should include at least one contributor. | | | π‘ | |
|
|
194
|
+
| [require-author](docs/rules/require-author.md) | Requires the `author` property to be present. | | | | |
|
|
195
|
+
| [require-bugs](docs/rules/require-bugs.md) | Requires the `bugs` property to be present. | | | | |
|
|
196
|
+
| [require-bundleDependencies](docs/rules/require-bundleDependencies.md) | Requires the `bundleDependencies` property to be present. | | | | |
|
|
197
|
+
| [require-dependencies](docs/rules/require-dependencies.md) | Requires the `dependencies` property to be present. | | | | |
|
|
198
|
+
| [require-description](docs/rules/require-description.md) | Requires the `description` property to be present. | βοΈ β
| | | |
|
|
199
|
+
| [require-devDependencies](docs/rules/require-devDependencies.md) | Requires the `devDependencies` property to be present. | | | | |
|
|
200
|
+
| [require-engines](docs/rules/require-engines.md) | Requires the `engines` property to be present. | | | | |
|
|
201
|
+
| [require-exports](docs/rules/require-exports.md) | Requires the `exports` property to be present. | | | | |
|
|
202
|
+
| [require-files](docs/rules/require-files.md) | Requires the `files` property to be present. | | | | |
|
|
203
|
+
| [require-keywords](docs/rules/require-keywords.md) | Requires the `keywords` property to be present. | | | | |
|
|
204
|
+
| [require-license](docs/rules/require-license.md) | Requires the `license` property to be present. | βοΈ β
| | | |
|
|
205
|
+
| [require-name](docs/rules/require-name.md) | Requires the `name` property to be present. | βοΈ β
| | | |
|
|
206
|
+
| [require-optionalDependencies](docs/rules/require-optionalDependencies.md) | Requires the `optionalDependencies` property to be present. | | | | |
|
|
207
|
+
| [require-peerDependencies](docs/rules/require-peerDependencies.md) | Requires the `peerDependencies` property to be present. | | | | |
|
|
208
|
+
| [require-type](docs/rules/require-type.md) | Requires the `type` property to be present. | βοΈ β
| | | |
|
|
209
|
+
| [require-types](docs/rules/require-types.md) | Requires the `types` property to be present. | | | | |
|
|
210
|
+
| [require-version](docs/rules/require-version.md) | Requires the `version` property to be present. | βοΈ β
| | | |
|
|
211
|
+
| [restrict-dependency-ranges](docs/rules/restrict-dependency-ranges.md) | Restricts the range of dependencies to allow or disallow specific types of ranges. | | | π‘ | |
|
|
212
|
+
| [restrict-private-properties](docs/rules/restrict-private-properties.md) | Disallows unnecessary properties in private packages. | | π§ | π‘ | |
|
|
213
|
+
| [scripts-name-casing](docs/rules/scripts-name-casing.md) | Enforce that names for `scripts` are in kebab case (optionally separated by colons). | π¨ | | π‘ | |
|
|
214
|
+
| [sort-collections](docs/rules/sort-collections.md) | Selected collections must be in a consistent order (lexicographical for most; lifecycle-aware for scripts). | βοΈ β
| π§ | | |
|
|
215
|
+
| [unique-dependencies](docs/rules/unique-dependencies.md) | Checks a dependency isn't specified more than once (i.e. in `dependencies` and `devDependencies`) | βοΈ β
| | π‘ | |
|
|
216
|
+
| [valid-author](docs/rules/valid-author.md) | Enforce that the `author` property is valid. | βοΈ β
| | | |
|
|
217
|
+
| [valid-bin](docs/rules/valid-bin.md) | Enforce that the `bin` property is valid. | βοΈ β
| | | |
|
|
218
|
+
| [valid-bundleDependencies](docs/rules/valid-bundleDependencies.md) | Enforce that the `bundleDependencies` (also: `bundledDependencies`) property is valid. | βοΈ β
| | | |
|
|
219
|
+
| [valid-config](docs/rules/valid-config.md) | Enforce that the `config` property is valid. | βοΈ β
| | | |
|
|
220
|
+
| [valid-contributors](docs/rules/valid-contributors.md) | Enforce that the `contributors` property is valid. | βοΈ β
| | | |
|
|
221
|
+
| [valid-cpu](docs/rules/valid-cpu.md) | Enforce that the `cpu` property is valid. | βοΈ β
| | | |
|
|
222
|
+
| [valid-dependencies](docs/rules/valid-dependencies.md) | Enforce that the `dependencies` property is valid. | βοΈ β
| | | |
|
|
223
|
+
| [valid-description](docs/rules/valid-description.md) | Enforce that the `description` property is valid. | βοΈ β
| | | |
|
|
224
|
+
| [valid-devDependencies](docs/rules/valid-devDependencies.md) | Enforce that the `devDependencies` property is valid. | βοΈ β
| | | |
|
|
225
|
+
| [valid-directories](docs/rules/valid-directories.md) | Enforce that the `directories` property is valid. | βοΈ β
| | | |
|
|
226
|
+
| [valid-engines](docs/rules/valid-engines.md) | Enforce that the `engines` property is valid. | βοΈ β
| | | |
|
|
227
|
+
| [valid-exports](docs/rules/valid-exports.md) | Enforce that the `exports` property is valid. | βοΈ β
| | | |
|
|
228
|
+
| [valid-files](docs/rules/valid-files.md) | Enforce that the `files` property is valid. | βοΈ β
| | | |
|
|
229
|
+
| [valid-homepage](docs/rules/valid-homepage.md) | Enforce that the `homepage` property is valid. | βοΈ β
| | | |
|
|
230
|
+
| [valid-keywords](docs/rules/valid-keywords.md) | Enforce that the `keywords` property is valid. | βοΈ β
| | | |
|
|
231
|
+
| [valid-license](docs/rules/valid-license.md) | Enforce that the `license` property is valid. | βοΈ β
| | | |
|
|
232
|
+
| [valid-local-dependency](docs/rules/valid-local-dependency.md) | Checks existence of local dependencies in the package.json | | | | β |
|
|
233
|
+
| [valid-main](docs/rules/valid-main.md) | Enforce that the `main` property is valid. | βοΈ β
| | | |
|
|
234
|
+
| [valid-man](docs/rules/valid-man.md) | Enforce that the `man` property is valid. | βοΈ β
| | | |
|
|
235
|
+
| [valid-name](docs/rules/valid-name.md) | Enforce that package names are valid npm package names | βοΈ β
| | | |
|
|
236
|
+
| [valid-optionalDependencies](docs/rules/valid-optionalDependencies.md) | Enforce that the `optionalDependencies` property is valid. | βοΈ β
| | | |
|
|
237
|
+
| [valid-os](docs/rules/valid-os.md) | Enforce that the `os` property is valid. | βοΈ β
| | | |
|
|
238
|
+
| [valid-package-definition](docs/rules/valid-package-definition.md) | Enforce that package.json has all properties required by the npm spec | | | | β |
|
|
239
|
+
| [valid-peerDependencies](docs/rules/valid-peerDependencies.md) | Enforce that the `peerDependencies` property is valid. | βοΈ β
| | | |
|
|
240
|
+
| [valid-private](docs/rules/valid-private.md) | Enforce that the `private` property is valid. | βοΈ β
| | | |
|
|
241
|
+
| [valid-publishConfig](docs/rules/valid-publishConfig.md) | Enforce that the `publishConfig` property is valid. | βοΈ β
| | | |
|
|
242
|
+
| [valid-repository](docs/rules/valid-repository.md) | Enforce that the `repository` property is valid. | βοΈ β
| | | |
|
|
243
|
+
| [valid-repository-directory](docs/rules/valid-repository-directory.md) | Enforce that if repository directory is specified, it matches the path to the package.json file | βοΈ β
| | π‘ | |
|
|
244
|
+
| [valid-scripts](docs/rules/valid-scripts.md) | Enforce that the `scripts` property is valid. | βοΈ β
| | | |
|
|
245
|
+
| [valid-type](docs/rules/valid-type.md) | Enforce that the `type` property is valid. | βοΈ β
| | | |
|
|
246
|
+
| [valid-version](docs/rules/valid-version.md) | Enforce that package versions are valid semver specifiers | βοΈ β
| | | |
|
|
247
|
+
| [valid-workspaces](docs/rules/valid-workspaces.md) | Enforce that the `workspaces` property is valid. | βοΈ β
| | | |
|
|
247
248
|
|
|
248
249
|
<!-- end auto-generated rules list -->
|
|
249
250
|
<!-- prettier-ignore-end -->
|
package/lib/plugin.mjs
CHANGED
|
@@ -5,18 +5,19 @@ import { rule as rule$3 } from "./rules/no-redundant-files.mjs";
|
|
|
5
5
|
import { rule as rule$4 } from "./rules/no-redundant-publishConfig.mjs";
|
|
6
6
|
import { rule as rule$5 } from "./rules/order-properties.mjs";
|
|
7
7
|
import { rule as rule$6 } from "./rules/repository-shorthand.mjs";
|
|
8
|
+
import { rule as rule$7 } from "./rules/require-attribution.mjs";
|
|
8
9
|
import { rules } from "./rules/require-properties.mjs";
|
|
9
|
-
import { rule as rule$
|
|
10
|
-
import { rule as rule$
|
|
11
|
-
import { rule as rule$
|
|
12
|
-
import { rule as rule$
|
|
13
|
-
import { rule as rule$
|
|
14
|
-
import { rule as rule$
|
|
15
|
-
import { rule as rule$
|
|
16
|
-
import { rule as rule$
|
|
10
|
+
import { rule as rule$8 } from "./rules/restrict-dependency-ranges.mjs";
|
|
11
|
+
import { rule as rule$9 } from "./rules/restrict-private-properties.mjs";
|
|
12
|
+
import { rule as rule$10 } from "./rules/scripts-name-casing.mjs";
|
|
13
|
+
import { rule as rule$11 } from "./rules/sort-collections.mjs";
|
|
14
|
+
import { rule as rule$12 } from "./rules/unique-dependencies.mjs";
|
|
15
|
+
import { rule as rule$13 } from "./rules/valid-local-dependency.mjs";
|
|
16
|
+
import { rule as rule$14 } from "./rules/valid-name.mjs";
|
|
17
|
+
import { rule as rule$15 } from "./rules/valid-package-definition.mjs";
|
|
17
18
|
import { rules as rules$1 } from "./rules/valid-properties.mjs";
|
|
18
|
-
import { rule as rule$
|
|
19
|
-
import { rule as rule$
|
|
19
|
+
import { rule as rule$16 } from "./rules/valid-repository-directory.mjs";
|
|
20
|
+
import { rule as rule$17 } from "./rules/valid-version.mjs";
|
|
20
21
|
import { createRequire } from "node:module";
|
|
21
22
|
import * as parserJsonc from "jsonc-eslint-parser";
|
|
22
23
|
|
|
@@ -29,22 +30,23 @@ const rules$2 = {
|
|
|
29
30
|
"no-redundant-files": rule$3,
|
|
30
31
|
"no-redundant-publishConfig": rule$4,
|
|
31
32
|
"order-properties": rule$5,
|
|
33
|
+
"require-attribution": rule$7,
|
|
32
34
|
...rules,
|
|
33
35
|
"repository-shorthand": rule$6,
|
|
34
|
-
"restrict-dependency-ranges": rule$
|
|
35
|
-
"restrict-private-properties": rule$
|
|
36
|
-
"scripts-name-casing": rule$
|
|
37
|
-
"sort-collections": rule$
|
|
38
|
-
"unique-dependencies": rule$
|
|
36
|
+
"restrict-dependency-ranges": rule$8,
|
|
37
|
+
"restrict-private-properties": rule$9,
|
|
38
|
+
"scripts-name-casing": rule$10,
|
|
39
|
+
"sort-collections": rule$11,
|
|
40
|
+
"unique-dependencies": rule$12,
|
|
39
41
|
...rules$1,
|
|
40
|
-
"valid-local-dependency": rule$
|
|
41
|
-
"valid-name": rule$
|
|
42
|
-
"valid-package-definition": rule$
|
|
43
|
-
"valid-repository-directory": rule$
|
|
44
|
-
"valid-version": rule$
|
|
42
|
+
"valid-local-dependency": rule$13,
|
|
43
|
+
"valid-name": rule$14,
|
|
44
|
+
"valid-package-definition": rule$15,
|
|
45
|
+
"valid-repository-directory": rule$16,
|
|
46
|
+
"valid-version": rule$17
|
|
45
47
|
};
|
|
46
|
-
const recommendedRules = { ...Object.fromEntries(Object.entries(rules$2).filter(([, rule$
|
|
47
|
-
const stylisticRules = { ...Object.fromEntries(Object.entries(rules$2).filter(([, rule$
|
|
48
|
+
const recommendedRules = { ...Object.fromEntries(Object.entries(rules$2).filter(([, rule$18]) => rule$18.meta.docs?.recommended).map(([name$1]) => ["package-json/" + name$1, "error"])) };
|
|
49
|
+
const stylisticRules = { ...Object.fromEntries(Object.entries(rules$2).filter(([, rule$18]) => rule$18.meta.docs?.category === "Stylistic").map(([name$1]) => ["package-json/" + name$1, "error"])) };
|
|
48
50
|
const plugin = {
|
|
49
51
|
configs: {
|
|
50
52
|
"legacy-recommended": {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { PackageJsonRuleModule } from "../createRule.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/rules/require-attribution.d.ts
|
|
4
|
+
declare const rule: PackageJsonRuleModule<[({
|
|
5
|
+
preferContributorsOnly?: boolean | undefined;
|
|
6
|
+
} | undefined)?], [{
|
|
7
|
+
readonly additionalProperties: false;
|
|
8
|
+
readonly properties: {
|
|
9
|
+
readonly preferContributorsOnly: {
|
|
10
|
+
readonly description: "Require that only `contributors` is present, and `author` is not defined.";
|
|
11
|
+
readonly type: "boolean";
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
readonly type: "object";
|
|
15
|
+
}]>;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { rule };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { createRule } from "../createRule.mjs";
|
|
2
|
+
import { fixRemoveObjectProperty } from "eslint-fix-utils";
|
|
3
|
+
|
|
4
|
+
//#region src/rules/require-attribution.ts
|
|
5
|
+
const rule = createRule({
|
|
6
|
+
create(context) {
|
|
7
|
+
const preferContributorsOnly = context.options[0]?.preferContributorsOnly ?? false;
|
|
8
|
+
let authorPropertyNode;
|
|
9
|
+
let contributorsPropertyNode;
|
|
10
|
+
return {
|
|
11
|
+
"Program > JSONExpressionStatement > JSONObjectExpression > JSONProperty[key.value=author]"(node) {
|
|
12
|
+
authorPropertyNode = node;
|
|
13
|
+
},
|
|
14
|
+
"Program > JSONExpressionStatement > JSONObjectExpression > JSONProperty[key.value=contributors]"(node) {
|
|
15
|
+
contributorsPropertyNode = node;
|
|
16
|
+
const contributorsValue = node.value;
|
|
17
|
+
if (contributorsValue.type !== "JSONArrayExpression" || !contributorsValue.elements.some((element) => !!element)) context.report({
|
|
18
|
+
messageId: "noContributors",
|
|
19
|
+
node
|
|
20
|
+
});
|
|
21
|
+
},
|
|
22
|
+
"Program:exit"(node) {
|
|
23
|
+
if (preferContributorsOnly) {
|
|
24
|
+
if (authorPropertyNode) context.report({
|
|
25
|
+
messageId: "contributorsOnly",
|
|
26
|
+
node: authorPropertyNode,
|
|
27
|
+
suggest: [{
|
|
28
|
+
fix: fixRemoveObjectProperty(context, authorPropertyNode),
|
|
29
|
+
messageId: "removeAuthor"
|
|
30
|
+
}]
|
|
31
|
+
});
|
|
32
|
+
if (!contributorsPropertyNode) context.report({
|
|
33
|
+
messageId: "missingContributor",
|
|
34
|
+
node
|
|
35
|
+
});
|
|
36
|
+
} else if (!authorPropertyNode && !contributorsPropertyNode) context.report({
|
|
37
|
+
messageId: "missing",
|
|
38
|
+
node
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
},
|
|
43
|
+
meta: {
|
|
44
|
+
defaultOptions: [{ preferContributorsOnly: false }],
|
|
45
|
+
docs: {
|
|
46
|
+
category: "Publishable",
|
|
47
|
+
description: "Ensures that proper attribution is included, requiring that either `author` or `contributors` is defined, and that if `contributors` is present, it should include at least one contributor."
|
|
48
|
+
},
|
|
49
|
+
hasSuggestions: true,
|
|
50
|
+
messages: {
|
|
51
|
+
contributorsOnly: "Only `contributors` should be defined for attribution.",
|
|
52
|
+
missing: "Property attribution is required. Either `author` or `contributors` should be defined.",
|
|
53
|
+
missingContributor: "Property attribution is required. `contributors` should be defined.",
|
|
54
|
+
noContributors: "At least one contributor should be defined.",
|
|
55
|
+
removeAuthor: "Remove `author`."
|
|
56
|
+
},
|
|
57
|
+
schema: [{
|
|
58
|
+
additionalProperties: false,
|
|
59
|
+
properties: { preferContributorsOnly: {
|
|
60
|
+
description: "Require that only `contributors` is present, and `author` is not defined.",
|
|
61
|
+
type: "boolean"
|
|
62
|
+
} },
|
|
63
|
+
type: "object"
|
|
64
|
+
}],
|
|
65
|
+
type: "suggestion"
|
|
66
|
+
},
|
|
67
|
+
name: "require-attribution"
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
//#endregion
|
|
71
|
+
export { rule };
|
|
@@ -9,6 +9,7 @@ declare const rules: {
|
|
|
9
9
|
readonly properties: {
|
|
10
10
|
readonly ignorePrivate: {
|
|
11
11
|
readonly default: boolean;
|
|
12
|
+
readonly description: "Determines if this rule should be enforced when the package's `private` property is `true`.";
|
|
12
13
|
readonly type: "boolean";
|
|
13
14
|
};
|
|
14
15
|
};
|
|
@@ -28,6 +28,7 @@ declare const createSimpleRequirePropertyRule: (propertyName: string, {
|
|
|
28
28
|
readonly properties: {
|
|
29
29
|
readonly ignorePrivate: {
|
|
30
30
|
readonly default: boolean;
|
|
31
|
+
readonly description: "Determines if this rule should be enforced when the package's `private` property is `true`.";
|
|
31
32
|
readonly type: "boolean";
|
|
32
33
|
};
|
|
33
34
|
};
|
|
@@ -34,6 +34,7 @@ const createSimpleRequirePropertyRule = (propertyName, { ignorePrivateDefault =
|
|
|
34
34
|
additionalProperties: false,
|
|
35
35
|
properties: { ignorePrivate: {
|
|
36
36
|
default: ignorePrivateDefault,
|
|
37
|
+
description: "Determines if this rule should be enforced when the package's `private` property is `true`.",
|
|
37
38
|
type: "boolean"
|
|
38
39
|
} },
|
|
39
40
|
type: "object"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-package-json",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.81.0",
|
|
4
4
|
"description": "Rules for consistent, readable, and valid package.json files. ποΈ",
|
|
5
5
|
"homepage": "https://github.com/JoshuaKGoldberg/eslint-plugin-package-json#readme",
|
|
6
6
|
"bugs": {
|