Skip to content

Commit 435f033

Browse files
authored
Add rule to main rules page (#184)
* Rename rule * Add rule to main rules page
1 parent 8cdb471 commit 435f033

File tree

6 files changed

+183
-22
lines changed

6 files changed

+183
-22
lines changed

docs/rules.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ Rules allow npm-package-json-lint to be fully customizable. npm-package-json-lin
145145
> Generates an error if the package.json properties fail to meet the desired requirements
146146
147147
* [prefer-property-order](rules/package-json-properties/prefer-property-order.md)
148+
* [no-duplicate-properties](rules/package-json-properties/no-duplicate-properties.md)
148149

149150

150151
## Disallowed node rules

docs/rules/dependencies/no-dup-fields.md renamed to docs/rules/package-json-properties/no-duplicate-properties.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
---
2-
id: no-dup-fields
3-
title: no-dup-fields
2+
id: no-duplicate-properties
3+
title: no-duplicate-properties
44
---
55

6-
Enabling this rule will result in an error being generated if package.json has duplicate fields in block section.
6+
Enabling this rule will result in an error being generated if package.json has duplicate properties in block section.
77

88
## Example .npmpackagejsonlintrc configuration
99

1010
```json
1111
{
1212
"rules": {
13-
"no-dup-fields": "error"
13+
"no-duplicate-properties": "error"
1414
}
1515
}
1616
```
@@ -41,7 +41,7 @@ Enabling this rule will result in an error being generated if package.json has d
4141
```json
4242
{
4343
"rules": {
44-
"no-dup-fields": "off"
44+
"no-duplicate-properties": "off"
4545
}
4646
}
4747
```

src/rules/no-dup-fields.js renamed to src/rules/no-duplicate-properties.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
const Parser = require('../Parser');
22
const {findDuplicatePropNames} = require('../validators/property');
3-
const LintIssue = require('./../LintIssue');
3+
const LintIssue = require('../LintIssue');
44

5-
const lintId = 'no-duplicate-fields';
5+
const lintId = 'no-duplicate-properties';
66
const nodeName = '';
77
const ruleType = 'standard';
88

@@ -15,7 +15,7 @@ const lint = (packageJsonData, severity) => {
1515
const dupProps = findDuplicatePropNames(source);
1616

1717
if (dupProps.length) {
18-
const message = `You have duplicate field names: ${dupProps.join(', ')}. Please remove duplicates.`;
18+
const message = `Duplicate properties detected. Please remove duplicates for: ${dupProps.join(', ')}.`;
1919

2020
return new LintIssue(lintId, severity, nodeName, message);
2121
}

test/unit/rules/no-dup-fields.test.js renamed to test/unit/rules/no-duplicate-properties.test.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const ruleModule = require('./../../../src/rules/no-dup-fields');
1+
const ruleModule = require('../../../src/rules/no-duplicate-properties');
22
const Parser = require('../../../src/Parser');
33

44
const {lint, ruleType} = ruleModule;
@@ -11,28 +11,28 @@ const parsePackageJson = source => {
1111
return json;
1212
};
1313

14-
describe('no-dup-fields Unit Tests', () => {
14+
describe('no-duplicate-properties Unit Tests', () => {
1515
describe('a rule type value should be exported', () => {
1616
test('it should equal "standard"', () => {
1717
expect(ruleType).toStrictEqual('standard');
1818
});
1919
});
2020

21-
describe('when package.json has duplicate fields', () => {
21+
describe('when package.json has duplicate properties', () => {
2222
test('LintIssue object should be returned', () => {
2323
const packageJsonData = parsePackageJson(`{
2424
"name": "package1",
2525
"name": "package2"
2626
}`);
2727
const response = lint(packageJsonData, 'error');
2828

29-
expect(response.lintId).toStrictEqual('no-duplicate-fields');
29+
expect(response.lintId).toStrictEqual('no-duplicate-properties');
3030
expect(response.severity).toStrictEqual('error');
31-
expect(response.lintMessage).toStrictEqual('You have duplicate field names: name. Please remove duplicates.');
31+
expect(response.lintMessage).toStrictEqual('Duplicate properties detected. Please remove duplicates for: name.');
3232
});
3333
});
3434

35-
describe('when package.json has nested duplicate fields', () => {
35+
describe('when package.json has nested duplicate properties', () => {
3636
test('LintIssue object should be returned', () => {
3737
const packageJsonData = parsePackageJson(`{
3838
"name": "package",
@@ -44,9 +44,9 @@ describe('no-dup-fields Unit Tests', () => {
4444
}`);
4545
const response = lint(packageJsonData, 'error');
4646

47-
expect(response.lintId).toStrictEqual('no-duplicate-fields');
47+
expect(response.lintId).toStrictEqual('no-duplicate-properties');
4848
expect(response.severity).toStrictEqual('error');
49-
expect(response.lintMessage).toStrictEqual('You have duplicate field names: eslint. Please remove duplicates.');
49+
expect(response.lintMessage).toStrictEqual('Duplicate properties detected. Please remove duplicates for: eslint.');
5050
});
5151
});
5252

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
---
2+
id: version-4.5.0-rules
3+
title: Rules
4+
original_id: rules
5+
---
6+
7+
Rules allow npm-package-json-lint to be fully customizable. npm-package-json-lint will only run the rules supplied. As of v2.7.0, there are multiple ways to supply [configuration](configuration.md). One of the easiest way is via a [.npmpackagejsonlintrc.json](rcfile-example.md) file. Please see the default config module, [npm-package-json-lint-config-default](https://github.com/tclindner/npm-package-json-lint-config-default) instead.
8+
9+
## Require node rules
10+
11+
> Generates an error if node is missing from package.json file
12+
13+
* [require-author](rules/required-node/require-author.md)
14+
* [require-bin](rules/required-node/require-bin.md)
15+
* [require-bugs](rules/required-node/require-bugs.md)
16+
* [require-bundledDependencies](rules/required-node/require-bundledDependencies.md)
17+
* [require-config](rules/required-node/require-config.md)
18+
* [require-contributors](rules/required-node/require-contributors.md)
19+
* [require-cpu](rules/required-node/require-cpu.md)
20+
* [require-dependencies](rules/required-node/require-dependencies.md)
21+
* [require-description](rules/required-node/require-description.md)
22+
* [require-devDependencies](rules/required-node/require-devDependencies.md)
23+
* [require-directories](rules/required-node/require-directories.md)
24+
* [require-engines](rules/required-node/require-engines.md)
25+
* [require-files](rules/required-node/require-files.md)
26+
* [require-homepage](rules/required-node/require-homepage.md)
27+
* [require-keywords](rules/required-node/require-keywords.md)
28+
* [require-license](rules/required-node/require-license.md)
29+
* [require-main](rules/required-node/require-main.md)
30+
* [require-man](rules/required-node/require-man.md)
31+
* [require-module](rules/required-node/require-module.md)
32+
* [require-name](rules/required-node/require-name.md)
33+
* [require-optionalDependencies](rules/required-node/require-optionalDependencies.md)
34+
* [require-os](rules/required-node/require-os.md)
35+
* [require-peerDependencies](rules/required-node/require-peerDependencies.md)
36+
* [require-preferGlobal](rules/required-node/require-preferGlobal.md)
37+
* [require-private](rules/required-node/require-private.md)
38+
* [require-publishConfig](rules/required-node/require-publishConfig.md)
39+
* [require-repository-directory](rules/required-node/require-repository-directory.md)
40+
* [require-repository](rules/required-node/require-repository.md)
41+
* [require-scripts](rules/required-node/require-scripts.md)
42+
* [require-types](rules/required-node/require-types.md)
43+
* [require-typings](rules/required-node/require-typings.md)
44+
* [require-version](rules/required-node/require-version.md)
45+
46+
## Type rules
47+
48+
> Generates an error if node's value doesn't have the correct data type
49+
50+
* [bin-type](rules/type/bin-type.md)
51+
* [bundledDependencies-type](rules/type/bundledDependencies-type.md)
52+
* [config-type](rules/type/config-type.md)
53+
* [cpu-type](rules/type/cpu-type.md)
54+
* [dependencies-type](rules/type/dependencies-type.md)
55+
* [description-type](rules/type/description-type.md)
56+
* [devDependencies-type](rules/type/devDependencies-type.md)
57+
* [directories-type](rules/type/directories-type.md)
58+
* [engines-type](rules/type/engines-type.md)
59+
* [files-type](rules/type/files-type.md)
60+
* [homepage-type](rules/type/homepage-type.md)
61+
* [keywords-type](rules/type/keywords-type.md)
62+
* [license-type](rules/type/license-type.md)
63+
* [main-type](rules/type/main-type.md)
64+
* [man-type](rules/type/man-type.md)
65+
* [name-type](rules/type/name-type.md)
66+
* [optionalDependencies-type](rules/type/optionalDependencies-type.md)
67+
* [os-type](rules/type/os-type.md)
68+
* [peerDependencies-type](rules/type/peerDependencies-type.md)
69+
* [preferGlobal-type](rules/type/preferGlobal-type.md)
70+
* [private-type](rules/type/private-type.md)
71+
* [repository-type](rules/type/repository-type.md)
72+
* [scripts-type](rules/type/scripts-type.md)
73+
* [version-type](rules/type/version-type.md)
74+
75+
76+
## Valid value rules
77+
78+
> Generates an error if node's value doesn't match one of the values in the supplied array
79+
80+
* [valid-values-author](rules/valid-values/valid-values-author.md)
81+
* [valid-values-engines](rules/valid-values/valid-values-engines.md)
82+
* [valid-values-license](rules/valid-values/valid-values-license.md)
83+
* [valid-values-name-scope](rules/valid-values/valid-values-name-scope.md)
84+
* [valid-values-private](rules/valid-values/valid-values-private.md)
85+
* [valid-values-publishConfig](rules/valid-values/valid-values-publishConfig.md)
86+
87+
## Dependency rules
88+
89+
> Generates an error if dependencies fail to meet the rules requirements
90+
91+
* [no-repeated-dependencies](rules/dependencies/no-repeated-dependencies.md)
92+
93+
* dependencies
94+
* [no-absolute-version-dependencies](rules/dependencies/no-absolute-version-dependencies.md)
95+
* [no-archive-dependencies](rules/dependencies/no-archive-dependencies.md)
96+
* [no-caret-version-dependencies](rules/dependencies/no-caret-version-dependencies.md)
97+
* [no-file-dependencies](rules/dependencies/no-file-dependencies.md)
98+
* [no-git-dependencies](rules/dependencies/no-git-dependencies.md)
99+
* [no-restricted-dependencies](rules/dependencies/no-restricted-dependencies.md)
100+
* [no-restricted-pre-release-dependencies](rules/dependencies/no-restricted-pre-release-dependencies.md)
101+
* [no-tilde-version-dependencies](rules/dependencies/no-tilde-version-dependencies.md)
102+
* [prefer-absolute-version-dependencies](rules/dependencies/prefer-absolute-version-dependencies.md)
103+
* [prefer-alphabetical-dependencies](rules/dependencies/prefer-alphabetical-dependencies.md)
104+
* [prefer-caret-version-dependencies](rules/dependencies/prefer-caret-version-dependencies.md)
105+
* [prefer-no-version-zero-dependencies](rules/dependencies/prefer-no-version-zero-dependencies.md)
106+
* [prefer-tilde-version-dependencies](rules/dependencies/prefer-tilde-version-dependencies.md)
107+
* devDependencies
108+
* [no-absolute-version-devDependencies](rules/dependencies/no-absolute-version-devDependencies.md)
109+
* [no-archive-devDependencies](rules/dependencies/no-archive-devDependencies.md)
110+
* [no-caret-version-devDependencies](rules/dependencies/no-caret-version-devDependencies.md)
111+
* [no-file-devDependencies](rules/dependencies/no-file-devDependencies.md)
112+
* [no-git-devDependencies](rules/dependencies/no-git-devDependencies.md)
113+
* [no-restricted-devDependencies](rules/dependencies/no-restricted-devDependencies.md)
114+
* [no-restricted-pre-release-devDependencies](rules/dependencies/no-restricted-pre-release-devDependencies.md)
115+
* [no-tilde-version-devDependencies](rules/dependencies/no-tilde-version-devDependencies.md)
116+
* [prefer-no-version-zero-devDependencies](rules/dependencies/prefer-no-version-zero-devDependencies.md)
117+
* [prefer-absolute-version-devDependencies](rules/dependencies/prefer-absolute-version-devDependencies.md)
118+
* [prefer-alphabetical-devDependencies](rules/dependencies/prefer-alphabetical-devDependencies.md)
119+
* [prefer-caret-version-devDependencies](rules/dependencies/prefer-caret-version-devDependencies.md)
120+
* [prefer-no-version-zero-devDependencies](rules/dependencies/prefer-no-version-zero-devDependencies.md)
121+
* [prefer-tilde-version-devDependencies](rules/dependencies/prefer-tilde-version-devDependencies.md)
122+
* bundledDependencies
123+
* [prefer-alphabetical-bundledDependencies](rules/dependencies/prefer-alphabetical-bundledDependencies.md)
124+
* optionalDependencies
125+
* [prefer-alphabetical-optionalDependencies](rules/dependencies/prefer-alphabetical-optionalDependencies.md)
126+
* peerDependencies
127+
* [prefer-alphabetical-peerDependencies](rules/dependencies/prefer-alphabetical-peerDependencies.md)
128+
129+
## Scripts rules
130+
131+
> Generates an error if scripts fail to meet the rules requirements
132+
133+
* [prefer-alphabetical-scripts](rules/scripts/prefer-alphabetical-scripts.md)
134+
135+
## Format rules
136+
137+
> Generates an error if node's value fails to meet the format requirements
138+
139+
* [description-format](rules/format/description-format.md)
140+
* [name-format](rules/format/name-format.md)
141+
* [version-format](rules/format/version-format.md)
142+
143+
144+
## Package.json property rules
145+
146+
> Generates an error if the package.json properties fail to meet the desired requirements
147+
148+
* [prefer-property-order](rules/package-json-properties/prefer-property-order.md)
149+
* [no-duplicate-properties](rules/package-json-properties/no-duplicate-properties.md)
150+
151+
152+
## Disallowed node rules
153+
154+
> Generates an error if the node is present
155+
156+
* [prefer-no-engineStrict](rules/disallowed-nodes/prefer-no-engineStrict)
157+
* [prefer-no-dependencies](rules/disallowed-nodes/prefer-no-dependencies)
158+
* [prefer-no-devDependencies](rules/disallowed-nodes/prefer-no-devDependencies)
159+
* [prefer-no-optionalDependencies](rules/disallowed-nodes/prefer-no-optionalDependencies)
160+
* [prefer-no-peerDependencies](rules/disallowed-nodes/prefer-no-peerDependencies)

website/versioned_docs/version-4.5.0/rules/dependencies/no-dup-fields.md renamed to website/versioned_docs/version-4.5.0/rules/package-json-properties/no-duplicate-properties.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
---
2-
id: version-4.5.0-no-dup-fields
3-
title: no-dup-fields
4-
original_id: no-dup-fields
2+
id: version-4.5.0-no-duplicate-properties
3+
title: no-duplicate-properties
4+
original_id: no-duplicate-properties
55
---
66

7-
Enabling this rule will result in an error being generated if package.json has duplicate fields in block section.
7+
Enabling this rule will result in an error being generated if package.json has duplicate properties in block section.
88

99
## Example .npmpackagejsonlintrc configuration
1010

1111
```json
1212
{
1313
"rules": {
14-
"no-dup-fields": "error"
14+
"no-duplicate-properties": "error"
1515
}
1616
}
1717
```
@@ -42,7 +42,7 @@ Enabling this rule will result in an error being generated if package.json has d
4242
```json
4343
{
4444
"rules": {
45-
"no-dup-fields": "off"
45+
"no-duplicate-properties": "off"
4646
}
4747
}
4848
```

0 commit comments

Comments
 (0)